我有一个PHP脚本,可以从各个位置下载视频。 视频文件可以是从20mb到100mb +
的任何地方我目前有PHP使用CURLOPT_FILE将视频文件保存在目录中。这没问题就行了。
由于要下载的大文件,我将cURL超时时间设置为45分钟,以允许下载文件。我还设置了set_time_limit(0),以便在下载完成后继续处理PHP页面。我还设置了ini_set(“memory_limit”,“500M”); 下载完成后,它应回显“已下载”,然后更新一条说明文件已下载的mysql记录。
正在发生的事情是,视频文件是由cURL正确下载的,但它没有在浏览器中显示“已下载”但是它正在更新mysql。
这是为什么?我自己试图提出一个解决方案,但我无法弄清楚这里的问题是什么......
答案 0 :(得分:1)
如果您处于浏览器环境中,浏览器将在一段时间后超时,因此即使脚本将继续运行,也会停止侦听脚本的输出。它因浏览器而异,但我看到的数字是30秒。
要解决此问题,您应该经常发送输出(即使是无意义的echo "<!--empty comment-->";
)。
我最近遇到了类似的问题,我通过不输出脚本中的任何内容来处理它,而是经常使用AJAX从浏览器轮询以查看是否已完成。
或者,不要使用浏览器环境(因为它不适合这个问题),而是使用命令行提示符,因为它没有(据我所知)这些超时。