

phpで200程のurlをfile_get_contentsをした際に約10分程経った頃にタイムアウトとなるようでpcのchromeで504が出ます。

さくらサーバーを使っており、エラーログを見ると  
Script timed out before returning headers: ○○.php  
とのことです。

求める結果としては時間がかかってもいいので最後まで処理をして欲しいと思っています。

とっている対策としては、  
php.iniに  
max_execution_time = 6000  
max_input_time = -1

実行phpには  
set_time_limit(0);  
としており、現状です。

ブラウザ側でタイムアウトしてるのでしょうか。。。

cronでも実行しているので、そちらも確実に完了して欲しいと思います。

確実に最後まで完了できるようご教示の程、よろしくお願いします。


CC BY-SA 3.0
2016-08-14T13:39:16.203
28263
2016-11-04T10:45:16.740
12483
question
php
phpのタイムアウトを無制限にしたい


それはApacheのタイムアウト設定によるものなので、PHP側の設定の問題ではありません。専用サーバであればそのあたりも設定できるかもしれませんが、共用サーバでは設定できないことが多いです。

Apacheを通さず実行した場合はこの制限は適用されませんから、実際の処理はcronや別プロセスで行い、ブラウザからのアクセスではその処理結果だけを表示するようにすれば回避はできるかと思います。

が、そもそも長時間にわたるスクリプト実行が禁止されている場合、管理会社から警告やアカウント停止等の措置を受けることもありますから、注意が必要です。


CC BY-SA 3.0
2016-08-15T04:08:24.623
28271
2016-08-15T04:08:24.623
8000
28263
answer


ブラウザで開いたページで長時間作業をするなら、少しずつデータをブラウザへ流せばブラウザのタイムアウトにはならずにすみます。（出力バッファに注意）  
ただしunarist♦氏も書かれているように、共用サーバでの長時間処理はとめられてしまう可能性があります。  
取得対象をキューにつっこんで、プログラムはそのキューから1件取得して処理を行うようにして、何度も実行すると並列処理にも応用できますし、使い勝手が良いかと思います。


CC BY-SA 3.0
2016-08-16T05:12:13.430
28304
2016-08-16T05:12:13.430
2605
28263
answer