我有2个JSON源,其中一个回复400 Bad request(取决于服务器的费用) 所以我希望我的PHP代码检查两个服务器的答案并选择工作一个
a1
谢谢!
答案 0 :(得分:0)
在$http_response_header
电话后检查file_get_contents
。
$json = file_get_contents(('https://'.$server1.'/v1/data?source='.$_GET['source']);
if (strpos($http_response_header[0],"400") > 0)
{
$json = file_get_contents(('https://'.$server.'/v1/data?source='.$_GET['source']);
}
请参阅http://php.net/manual/en/reserved.variables.httpresponseheader.php
上的示例答案 1 :(得分:0)
以下是您可能想要实施的内容。您的目标是通过正常的错误处理和删除代码重复来获得该想法并以您自己的方式实现类似的东西:
$json = file_get_contents('https://server1.lan/v1/data');
if ($json === false)
{
$json = file_get_contents('https://server2.lan/v1/data');
if ($json === false)
{
die('Both servers are unavailable');
}
}
file_get_contents
失败时返回布尔值false
,因此如果第一台服务器不可用,请调用第二台服务器。如果它也不可用,请退出脚本,或进行您喜欢的某种错误处理。
您可能希望创建一个可能的服务器名称数组,并使用一个迭代所有服务器名称的函数,直到找到一个正常的服务器名称,然后返回内容,或者在失败时抛出异常。
我还建议您使用curl
,它可以让您选择查看请求的错误代码,自定义请求本身等。