私は現在PHP5.2を持っています。json_decode
最終的には、HTTPリクエストを介して取得したJSONファイルの内容を解析するためにを使用したいと思います。
json_decode
JSONが文字列に含まれ、パラメーターとして渡される必要があるため、を介してファイルを文字列に読み込んでいますfile_get_contents
。
それを次のように考えてください:
$JSON = file_get_contents($URL);
ここ$JSON
で、はファイルの内容のストレージ文字列であり、$URL
はHTTPリクエストを介してファイルをフェッチするためのターゲットURLです。file_get_contents
PHPマニュアルの状態について:
この関数は、読み取ったデータを返すか、失敗した場合はFALSEを返します。
失敗する限り、これはFALSE
タイムアウト(サーバーに到達できなかった$URL
)、404
(サーバーに到達したが、ファイルはに存在しなかった$URL
)、503
(サーバーに到達したが、ビジー状態で適切に応答できなかった)のいずれかで返されると想定しています。 、または500
(内部サーバーエラー、通常は発生しないはずです)。
とにかく、私が最も懸念している上記のエラーのうち、503
私がヒットしているサーバーは、HTTPリクエストでこれをスローすることがあります。このような場合は、もう一度やり直したいと思います。
だから私はこれを思いついた:
$JSON = null; //Initially set to null as we have not fetched it
for($attempt = 0; $attempt < 3; $attempt++) //Try 3 times to fetch it
if($JSON = file_get_contents($URL)) break; //If we fetch it, stop trying to
//Kill the script if we couldn't fetch it within 3 tries
if($JSON == null) die("Could not get JSON file");
この種の仕事はしますが、私はそれがあまりしっかりしていないと思います。私はコンテキストについてもっと読んでいましたが、PHPでそれらを使用する方法を完全にはフォローしていません。この種のことをもっとうまく処理できる方法はありますか?