如果您想监控下载进度,可以使用 filesize() 函数。
但请注意:该函数的结果会被缓存,因此您始终会得到 0 字节。在调用 filesize() 之前调用 clearstatcache() 以确定下载文件的实际大小。
这可能会影响性能,但如果您想提供信息,就无法避免。
上面的示例扩展
<?php
// 获取远程文件的大小
$fs = ftp_size($my_connection, "test");
// 初始化下载
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
clearstatcache(); // <- 这很重要
$dld = filesize($locfile);
if ( $dld > 0 ){
// 计算百分比
$i = ($dld/$fs)*100;
printf("\r\t%d%% 已下载", $i);
}
// 继续下载...
$ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "下载文件时出现错误...";
exit(1);
}
?>
Philip