PHP持续保有长连接,利用flush持续更新浏览器UI,下载进度条实现
程序员文章站
2022-03-17 21:25:29
...
如何用PHP+JS实现上传进度条,大部分的人可能都实现过,但是下载呢?如何呢?原理也是差不多的,就是分次读写,每次读多少字节,但是这样的不好就是长连接,一般实现下载进度条常用的两种解决方案是:一种是需要用socket保持与客户端通信,持续保有长连接,利用flush()持续更新浏览器UI,返回已下载的数据大小,然后可以显示下载速度,以及进度条之类;二种是php与flash交互,显示进度条。
setFileSize($filesize);";//在前台显示文件大小
}
$newf = fopen ($newfname, "wb");
$downlen=0;
if ($newf) {
while(!feof($file)) {
$data=fread($file, 1024 * 8 );//默认获取8K
$downlen+=strlen($data);//累计已经下载的字节数
fwrite($newf, $data, 1024 * 8 );
echo "";//在前台显示已经下载文件大小
ob_flush();
flush();
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}
?>
文件大小 | 未知长度 |
已经下载 | |
完成进度 | 0% |
以上就介绍了PHP持续保有长连接,利用flush持续更新浏览器UI,下载进度条实现,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
下一篇: php fileinode 取得文件模式