我正在使用 CURL 从外部 url 下载一个大文件并将其保存在我的服务器上。这可能需要几分钟。在下载运行时,我正在使用 curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,.. 运行匿名函数,该函数会使用当前下载信息定期更新我的 $_SESSION['download_progress'] 变量。
现在,所有这一切都发生在 upload.php 文件中,当用户等待文件下载时,我使用 javascript 请求 progress.php 页面,其中包含以下简单代码:
session_start();
echo $_SESSION['download_progress'];
这允许我的 javascript 代码显示有关下载进度的信息。
除了它不工作。
在“upload.php”完成加载之前,“progress.php”页面不会加载(换句话说,两个页面仅在文件完成下载后加载),这并不好。session_start() 以某种方式阻止了“progress.php”页面的加载。我使用自己的服务器(apache + php 5.4),所以我拥有所有管理员权限。
我怎么解决这个问题?我可以使用一些丑陋的解决方法,比如将下载信息写入文本文件而不是会话变量,然后使用 javascript 直接读取该文本文件,但我宁愿不这样做。
谢谢