我目前有 PHP5.2。我最终想使用json_decode
, 来解析通过 HTTP 请求获得的 JSON 文件的内容。
json_decode
要求 JSON 在字符串中并作为参数传递,所以我通过file_get_contents
.
把它想象成:
$JSON = file_get_contents($URL);
where$JSON
是文件内容的存储字符串,$URL
是通过 HTTP 请求获取文件的目标 URL。关于file_get_contents
PHP手册状态:
该函数返回读取的数据或失败时返回 FALSE。
就失败而言,我假设这FALSE
会在超时(无法到达服务器$URL
)、a 404
(到达服务器,但文件不存在于$URL
)、a 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 中使用它们。有什么方法可以更好地处理这类事情吗?