我尝试使用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返回任何数据。
我如何解决?
答案 0 :(得分:1)
您还应该更改nginx fcgi超时值。 PHP脚本继续执行但你在nginx和PHP超时之间的连接。
答案 1 :(得分:1)
使下载异步。像一个进程只填充一些DB或rabbitMq下载请求和其他wil cosume它(也许是cron)