欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP持续保有长连接,利用flush持续更新浏览器UI,下载进度条实现

程序员文章站 2022-04-22 22:02:14
...
如何用PHP+JS实现上传进度条,大部分的人可能都实现过,但是下载呢?如何呢?原理也是差不多的,就是分次读写,每次读多少字节,但是这样的不好就是长连接,一般实现下载进度条常用的两种解决方案是:一种是需要用socket保持与客户端通信,持续保有长连接,利用flush()持续更新浏览器UI,返回已下载的数据大小,然后可以显示下载速度,以及进度条之类;二种是php与flash交互,显示进度条。
文件大小
未知长度
已经下载
完成进度
0%
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); } } ?>

以上就介绍了PHP持续保有长连接,利用flush持续更新浏览器UI,下载进度条实现,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。