PHP长期运行脚本替代?

时间:2017-04-20 08:31:46

标签: php

我尝试使用file_put_contents从远程服务器下载文件。该脚本通过ajax调用。我遇到的问题是当文件很大时脚本超时,例如(500MB)。我得到 504 Gateway Timeout - nginx

的download.php       $ destination =" /home/mywebsite/public_html/wp-content/channels/videos/test.mp4" ;;

    $link = "http://www.example.com/videos/movie.mp4"; //500mb
    $result = file_put_contents($destination, fopen($link, 'r'));

我使用的是专用托管服务。我已经更改了我的php.ini并在phpinfo();

中确认了

max_execution_time 7200 max_input_time 7200 max_input_vars 1000 memory_limit -1 output_buffering 4096 post_max_size 1200M upload_max_filesize 1000M

此脚本可以保持超时。还有另一种解决方案我该如何解决?当我检查目录时文件已成功下载但页面超时。所以我无法通过ajax返回任何数据。

我如何解决?

2 个答案:

答案 0 :(得分:1)

您还应该更改nginx fcgi超时值。 PHP脚本继续执行但你在nginx和PHP超时之间的连接。

答案 1 :(得分:1)

使下载异步。像一个进程只填充一些DB或rabbitMq下载请求和其他wil cosume它(也许是cron)