プロが教える店舗&オフィスのセキュリティ対策術

「file_get_contents」で「HTTP/1.0 504 Connection Timed Out」

ini_set('default_socket_timeout',300);
ini_set('max_execution_time',300);

上記のように書いた上で、ちょっと重いAPI(XML)を
file_get_contentsで取得するプログラムをcrontabで動かし、
結果(成功か失敗か、出力結果等)がメールで送られるようになっています。

毎日午前1時0分に実行されるようにしているのですが、
二日に1回くらいの頻度で午前1時3分に以下のように書かれたメールが届きます。

Warning: file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 504 Connection Timed Out
in /home/***/***/***.php on line 36

この504エラーというのは、PHPの書き方しだいで回避できるものなのでしょうか?
default_socket_timeoutは300秒(5分)になっているので、
1時3分にメールが送られてきているということは、
PHPがタイムアウトと判断する前に終了しているということでしょうか?
サーバー側が504エラーという結果を返しているということですか?

よろしくお願いします。

A 回答 (3件)

set_time_limit()での設定はどうでしょうか?


http://php.hushlog.com/2008/06/set_time_limit.php
    • good
    • 0

bloodybellさん



申し訳ありません。
なぜか分からないのですが、普段使っているアカウントとは違うアカウントから質問を投稿してしまったようで、「mouse_pad」のパスワードが不明なため普段使っているこちらのアカウントから質問を続けさせていただきます。

phpinfo()で確認したところ、default_socket_timeout,max_execution_timeのどちらもLOCALVALUEにて上書きされていました。

使用させていただいているサーバーに関しては、申し訳ありませんがお答えでき兼ねます。
    • good
    • 0

どちらにせよ、プログラム上の問題と云うよりはタイムアウトによるエラーのようですね。


phpファイル中でのイニシャルのセットはphpinfo()等でみてちゃんと反映されていますか?
支障がなければですが、ご利用のサーバーなど解ると参考になるかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!