If you want to monitor the progress of the download, you may use the filesize()-Function.
But note: The results of said function are cached, so you'll always get 0 bytes. Call clearstatcache() before calling filesize() to determine the actual size of the downloaded file.
This may have performance implications, but if you want to provide the information, there's no way around it.
Above sample extended:
<?php
// get the size of the remote file
$fs = ftp_size($my_connection, "test");
// Initate the download
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
clearstatcache(); // <- this is important
$dld = filesize($locfile);
if ( $dld > 0 ){
// calculate percentage
$i = ($dld/$fs)*100;
printf("\r\t%d%% downloaded", $i);
}
// Continue downloading...
$ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "There was an error downloading the file...";
exit(1);
}
?>
Philipftp_nb_fget
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ftp_nb_fget
Референца за `function.ftp-nb-fget.php` со подобрена типографија и навигација.
ftp_nb_fget
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ftp_nb_fget — Презема датотека од FTP-серверот и ја запишува во отворена датотека (неблокирачки)
= NULL
FTP\Connection
$ftp,resource
$stream,string
$remote_filename,int
$mode = FTP_BINARY,int
$offset = 0): int
ftp_nb_fget() презема далечинска датотека од FTP-серверот.
Разликата помеѓу оваа функција и ftp_fget() е што оваа функција ја презема датотеката асинхроно, така што вашата програма може да извршува други операции додека датотеката се презема.
Параметри
ftp-
Еден FTP\Connection instance.
stream-
Отворен покажувач на датотека во кој ги чуваме податоците.
remote_filename-
ја зачувува локалната датотека на FTP-серверот.
mode-
Патеката до локалната датотека.
FTP_ASCIIorFTP_BINARY. offset-
Позицијата во оддалечената датотека од која ќе започне преземањето.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. FTP_FAILED or FTP_FINISHED
or FTP_MOREDATA.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.1.0 |
На ftp параметарот очекува FTP\Connection
инстанца сега; претходно, а resource се очекуваше.
|
| 7.3.0 |
На mode Позицијата во далечинската датотека за почеток на поставувањето.
|
Примери
Пример #1 ftp_nb_fget() example
<?php
// open some file for writing
$file = 'index.php';
$fp = fopen($file, 'w');
$ftp = ftp_connect($ftp_server);
$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
// Initiate the download
$ret = ftp_nb_fget($ftp, $fp, $file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Do whatever you want
echo ".";
// Continue downloading...
$ret = ftp_nb_continue($ftp);
}
if ($ret != FTP_FINISHED) {
echo "There was an error downloading the file...";
exit(1);
}
// close filepointer
fclose($fp);
?>Види Исто така
- ftp_nb_get() - Презема датотека од FTP-серверот и ја запишува во локална датотека (неблокирачки)
- ftp_nb_continue() - Продолжува со преземање/испраќање датотека (неблокирачки)
- ftp_fget() - Презема датотека од FTP серверот и ја зачувува во отворена датотека
- ftp_get() - Презема датотека од FTP серверот