• 締切済み

「file_get_contents」で「HTTP/1.0 504 C

「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エラーという結果を返しているということですか? よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数19

みんなの回答

回答No.3

set_time_limit()での設定はどうでしょうか? http://php.hushlog.com/2008/06/set_time_limit.php

  • php_noob
  • ベストアンサー率0% (0/0)
回答No.2

bloodybellさん 申し訳ありません。 なぜか分からないのですが、普段使っているアカウントとは違うアカウントから質問を投稿してしまったようで、「mouse_pad」のパスワードが不明なため普段使っているこちらのアカウントから質問を続けさせていただきます。 phpinfo()で確認したところ、default_socket_timeout,max_execution_timeのどちらもLOCALVALUEにて上書きされていました。 使用させていただいているサーバーに関しては、申し訳ありませんがお答えでき兼ねます。

回答No.1

どちらにせよ、プログラム上の問題と云うよりはタイムアウトによるエラーのようですね。 phpファイル中でのイニシャルのセットはphpinfo()等でみてちゃんと反映されていますか? 支障がなければですが、ご利用のサーバーなど解ると参考になるかもしれません。

関連するQ&A

  • file_get_contentsについて

    file_get_contentsについて教えてください。 現在あるサイトを定期的にチェックし、特定の文字列が存在したら メールを送るというものを作っています。 そのサイトチェックの際にfile_get_contentsを使って、 サイトの中身をチェックしています。 $tmpPage = file_get_contents('~.cgi?aa=bbb'); 上記の用に記述して$tmpPage内の文字列をチェックすることで 実現できているのですが、本来このサイトは携帯向けのページのため ヘッダー情報を付加して下記のように記述しています。 $opts = array( 'http'=>array( 'method'=>'GET', 'header'=>'Host :www.XXXXX.jp' . PHP_EOL . 'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL . 'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp' ) ); $context = stream_context_create( $opts ); $tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context ); このように記述すると Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found とエラーが返ってきてしまいます。 アクセスするURLをYahooやGoogleにすると問題なく動いているので、 問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と なっているのがダメなのではないかと思っています。 アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を 付加する場合、file_get_contentsの使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • file_get_contents()の挙動につい

    今、PHPを使用したHTTP通信につきまして困っております。 何でも結構ですのでアドバイスいただけましたら助かります。。 file_get_contents()を利用して、REST通信をしています。 200応答時は問題無いのですが、404や400応答時に file_get_contents()はfalseしか返さず、 本来受信しているはずのコンテンツを取得することができません。 色々試していたのですが、解決策が見つかりませんでした。 よろしくお願いしますm(_ _)m

    • ベストアンサー
    • PHP
  • file_get_contentsで外部URLファイルの読み込みの設定

    外部URLのXMLが取得したく、file_get_contentsで取得しようと思っております。 ただ、サーバマシンからですと、falseが返ってきてしまいます。 環境は、 php 4.3.9(RedhatEL4のup2dateでインストール出来るバージョン) になります。 php.iniの allow_url_fopenはOn default_socket_timeoutも60 と十分取っております。 $content = file_get_contents('http://アドレス'); でテストしますと、 私のローカル(OSX php5.2.1) で確認しますと、正常に取得出来るのですが、 RedhatEL4 php4.3.9で行いますと、 falseが返ってきてしまい、取得出来ません。 なお、サーバマシンからwgetでは取得可能です。 allow_url_fopen以外に、何か設定が必要になりますでしょうか。 アドバイスを頂けませんでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • file_get_contents()の引数

    PHPのfile_get_contents()関数についてです。 file_get_contentsに付けるパラメータはどのようなものがありますか? 解りやすく教えて頂けると助かります よろしくお願いします!

    • 締切済み
    • PHP
  • 「include」と「file_get_contents」の違いがよく

    「include」と「file_get_contents」の違いがよく分かりません。 ネットで調べてみました。 ・「include」… 指定したファイルを読み込んで評価 ・「file_get_contents」… 指定したファイルの内容を全て読み込んで文字列として返す で、実際に試してみたのですが、「file_get_contents」の方がよく分かりません。 具体的には、下記を試すと、結果が、tt string(44) "" となるのですが、ttって何ですか? 評価をしないで文字列として返したということでしょうか? それでなんで tt になるのでしょうか? ▼hoge.php <?php $s = file_get_contents("test1.php"); var_dump($s); ?> ▼test1.php <?php echo ("1どうなるのかな"); ?>

    • ベストアンサー
    • PHP
  • file_get_contentsなどでrefererを設定する方法。

    phpでの質問です。 file_get_contentsなどでファイルを取得できますが、それにreferer(リンク元)を設定したいのです。 どうしたら良いのでしょうか。教えて下さい。 HTTP_clientなどのpearは使えない環境にあります。

    • 締切済み
    • PHP
  • file_get_contents使用時のエラーについて

    file_get_contents使用時に下記のようなエラーが出ました。 ===エラーの内容=== PHP Warning: file_get_contents(<取得するURL文字列>): failed to open stream: HTTP request failed! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> in <エラーの起きたファイル名> on line 32 ===概要=== yahooの検索apiを利用して検索結果を取得しようとしています。 別のサイトでは同様の構文で取得できているので、書き方に問題はないと思うのですが、サーバやphpの設定は多少違う部分があるかもしれません。 いろいろ探してみましたが、原因がわかりません。 取得するURLは直にたたくとちゃんと見ることができます。 心当たりがある方、補足説明が必要な方、ご回答よろしくお願いします。

    • 締切済み
    • PHP
  • file(), file_get_contents(), fopen() がタイムアウトしてしまう

    パスが正しいかどうかを何度も確認しましたが、スクリプトのURLをブラウザで開こうとすると、5~6秒した後、以下のエラーが出ます。 Warning: file_get_contents(読み込むファイルのパス): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in スクリプトのパス.php on line 16 おそらく、file_get_contentsの読み込もうとするファイルが重たすぎるのだと思います(スクリプトのファイルサイズ自体は軽いのですが処理に時間がかかってしまう)。というのも、読み込むファイルの内容を、<?php echo "hello world"; ?> とすると、エラーが出なくなり、正常に読み込んでくれます。また、読み込むファイルは php ファイルで同ドメイン上にあり、このファイルをブラウザから閲覧可能です。 他に、fopen, include, file も試しましたが、同様に上記のようなエラーがでます。これはサーバ側でスクリプトの処理の時間制限を行っているからでしょうか? ちなみに、スクリプトの冒頭に、 set_time_limit(0); 一番最後に set_time_limit(30); をおいてみましたが、結果は同様でした。 もし何か対処方法をご存知の方おられましたら、どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • file_get_contentsでcss読み込み

    file_get_contentsで、<link rel="stylesheet" href="style.css">と同じことをやるにはどうすればよいのでしょうか? 結果をechoすると、同じこと? それとも、結果をechoするのは、htmlにcssを直書きする内部css扱いになるので、 <link rel="stylesheet" の外部cssとは異なる? css読み込めれば、「file_get_contents」でなくても良いです。 「include」とかでもcssを読み込めるのでしょうか?

    • ベストアンサー
    • PHP
  • file_get_contents()にて文字化け

    PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m

    • 締切済み
    • PHP

専門家に質問してみよう