我有这个代码可以获取远程网址并向用户显示进度:
$fpIn = fopen($remoteUrl, 'r');
if ( !$fpIn ) logdie('FAILED:Remote url cannot be opened for reading');
$fpOut = fopen($localPath, 'w');
if ( !$fpOut ) logdie('FAILED:Local file cannot be opened for writing');
$dlen = 0;
while ( !feof($fpIn) )
{
$data = fread($fpIn, 4096);
fwrite($fpOut, $data);
$dlen += strlen($data);
logshow("FSIZE:".$dlen);
}
fclose($fpIn);
fclose($fpOut);
logshow("DONE:".$dlen);
...
logdie()
函数只是将msg更新为db字段而死...而logshow()
函数更新db中的msg并继续运行代码...
在浏览器中,有一个重复的ajax调用,它会检查数据库并通知用户进程的状态......
禁用allow_url_fopen的服务器出现问题
如果可用,我可以使用curl或fsockopen,但是我无法获得文件下载的进度,这是我使用fopen的主要原因。
是否有任何解决方法可以将远程文件保存在服务器上并同时获得进程的进度?