我的代码:
$conn_id = ftp_connect($ip_address, $port);
$login_result = ftp_login($conn_id, $username, $password);
if ((!$conn_id) || (!$login_result)) {
$p->setProgressBarProgress(0,"Connection error", "red");
}else{
$size_ftp = ftp_size($conn_id, $file_ftp);
$ret = ftp_nb_get($conn_id, $file_locally, $file_ftp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
$size_locally = ( file_exists($file_locally) ? filesize($file_locally) : "-");
$perc = round(($size_locally/$size_ftp)*100);
$p->setProgressBarProgress($perc, common::formatBytes($size_locally)." of ".common::formatBytes($size_ftp), "orange");
// Continue downloading...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
$p->setProgressBarProgress(100,"Download failed", "red");
}else{
$p->setProgressBarProgress(100,"Download complete", "green");
}
}
该行:
$size_locally = ( file_exists($file_locally) ? filesize($file_locally) : "-");
获取初始文件大小,例如:1460(这是1.43 kb),那就是问题所在..文件大小不会根据下载的内容而改变。如果我刷新Windows资源管理器中的文件夹,我可以看到文件大小正在变化,因为它下载更多。如果我在循环时回显文件大小,我看到无穷无尽:1460 1460 1460 1460 1460 1460
我尝试过冲,ob_flush等......不起作用。
在我的脚本顶部,我有这一行:
ob_end_clean();
ini_set('output_buffering', '0');
必须让进度条刷新(有效)。
如何获得最新的文件大小,同时增加大小?
答案 0 :(得分:0)
<强>更新强> http://php.net/manual/en/function.filesize.php请参阅注释“如果您最近在文件中添加了某些内容,并将其关闭,则此方法将不会显示附加数据:”..
解决方案:您应该在调用之前插入对clearstatcache()的调用 文件大小()