phpで外部ファイルをfile_get_contentsなどで読み込むとき、

ファイルが他サーバーの場合は「サーバー落ち」や「アクセス過多」などでエラーになる場合があります。

例えば、ファイル読み込み時に「503」エラーだったりすると、読み込みが失敗してwarningが出ます。

httpリクエストでheadのレスポンスコードを見て、それから正常なら正式リクエストを送る方法を試しています。

でも、正式リクエストでエラーだったら結局エラーwarningが表示されてしまう気がします。

これを回避するためには、どのようにすればよいのでしょうか?
なにかアドバイスを頂けると助かります。

回答の条件
  • 1人5回まで
  • 登録:2007/06/15 16:26:05
  • 終了:2007/06/20 11:15:04

ベストアンサー

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222007/06/15 17:03:48

ポイント35pt

試していませんが、PEARのHTTP_Requestとかを利用すると同でしょうか?

warningが出ないかは確認してませんが、大丈夫だったような気がします。間違っていたらすいません。

id:onigirin

ありがとうございます。

file_get_contentsをやめてHTTP_Requestで試してみます。

PEARは本当にいろいろありますねぇ。

普通にコードを書かなくていろいろ実現できるのは便利な反面、

自分のレベルを超えた問題に出合ったときに

対処不能になりそうなのが怖いです。。。

2007/06/15 17:39:09

その他の回答(1件)

id:t_shiono No.1

t_shiono回答回数256ベストアンサー獲得回数222007/06/15 17:03:48ここでベストアンサー

ポイント35pt

試していませんが、PEARのHTTP_Requestとかを利用すると同でしょうか?

warningが出ないかは確認してませんが、大丈夫だったような気がします。間違っていたらすいません。

id:onigirin

ありがとうございます。

file_get_contentsをやめてHTTP_Requestで試してみます。

PEARは本当にいろいろありますねぇ。

普通にコードを書かなくていろいろ実現できるのは便利な反面、

自分のレベルを超えた問題に出合ったときに

対処不能になりそうなのが怖いです。。。

2007/06/15 17:39:09
id:mlkc81 No.2

mlkc81回答回数27ベストアンサー獲得回数22007/06/16 04:37:13

ポイント35pt

自分も試してはいないので、想像で申し訳ありませんが、一度ダウンロードする形にしてみてはいかがでしょうか?

ダウンロードではエラー表示を抑制し、ダウンロードで成功した場合のみ、ダウンロードしたファイルを読み込む形にすれば、ダウンロード成功するならば、必ずエラー表示を出さないでファイルを読み込むことが出来るかと思います。

ダウンロードの成功の判断が手間になりそうな気はしますが・・・。PHPのcURLライブラリ辺りが使えるのではないかと思います。

id:onigirin

ありがとうございます。

一度こちらに保存してからなら、確実性は高いですね。

cURLに関する情報があまり見かけませんが、

なかなか便利そうなライブラリですね。

2007/06/16 11:56:12
  • id:t_shiono
    file_get_contentsを使うのであれば、phpの設定ファイルにおいて、error_reportingの値を変更するというのもあるようですね。

    http://jp2.php.net/file_get_contents
    (中段の警告と書かれた部分参照)
  • id:gekikawa
    邪道と言われそうですが、@で抑制してしまえばどうでしょう?
    $contents = @file_get_contents($target);
    if(strlen($contents)) 正常処理
    とすれば、万が一のエラー時にメッセージも出ませんし、処理が
    トラブルことも減らせる気がしますが...
  • id:onigirin
    ■t_shionoさん

    ありがとうございます。
    逆に予期していないバグが見つかりにくいのもありますが、
    エラー表示を出なくさせるのも大切ですね。

    ■gekikawaさん

    ありがとうございます。
    「@」は検索できないので今までよくわかっていませんでしたが、
    そういう使い方ができるのですね。
    シンプルですみそうでいいですね。
    早速テストしてみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません