【发布时间】:2012-10-01 14:26:47
【问题描述】:
我目前有 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。
就失败而言,我假设这会在超时(无法到达$URL 的服务器)、404(到达服务器,但文件在$URL 不存在)时返回FALSE )、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 中使用它们。有什么方法可以更好地处理这类事情吗?
【问题讨论】:
标签: php json httprequest