php curl在查询之前检查url是否可访问

php curl在查询之前检查url是否可访问,php,curl,Php,Curl,我们使用的api有问题 下面是我们在api前端使用的不命名代码 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://apiurl.com/whatever/api/we/call'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ch_output = curl_exec($ch); curl_close($ch); 此响应超时,但不会持续很久。这会让我们的web应用程序运行速度大大降

我们使用的api有问题

下面是我们在api前端使用的不命名代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://apiurl.com/whatever/api/we/call');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ch_output = curl_exec($ch);
curl_close($ch);
此响应超时,但不会持续很久。这会让我们的web应用程序运行速度大大降低,因此,由于返回值不正确,代码会进一步中断。我可以解决这个问题,但是我不知道如何解决响应超时问题。在尝试执行curl请求之前,是否有任何方法可以快速查看url是否有响应,例如在终端中执行ping之类的操作


谢谢。

您的意思是使用curl\u setopt$ch、CURLOPT\u CONNECTTIMEOUT、NUMERIC\u TIMEOUT\u VALUE;要设置超时?

您最好的选择是将curl上的超时设置为更可接受的级别。DNS查找、连接超时、传输超时等有多个超时选项。此处提供了更多信息

,但即使您在第二秒成功ping,它也可能没有响应。ping与此无关。可能存在ping,无法访问站点,反之亦然。除此之外,您不能ping url-only主机名。还可以看到连接发生时的CURLOPT_超时,但响应暂停。我没有使用该标志,因此它处于默认超时,不管是什么。api的合理超时值是多少?目前,剧本花了一分钟左右的时间才摆脱困境。。。我们真的需要把它减少到瞬间。你会用什么?400毫秒这样的时间太短了吗?太长了?你可以给它几秒钟,如果它超时了,把这个事实缓存一段时间。通过这种方式,其他脚本可以使用本地缓存进行快速检查,查看api最近是否不可用。我认为400毫秒很短,因为每隔一段时间就需要执行一次dns查找,而这些查找很容易就需要400毫秒,但偶尔出现一次错误超时可能会让您满意。谢谢您提供的信息克里斯:我怎么知道它是否超时了?如果回答为空,会是这样吗?