PHP:如何处理卷曲响应


PHP: how to handle curl response

我试图制作脚本来检查站点是启动还是关闭。一切正常,但是当网站不是网站时,我的意思是该网站不存在。然后 php 执行加载时间增加。我想以某种方式处理这个问题。如何检查站点是否存在并中断卷曲会话?这是我的脚本:

<?php
$ch = curl_init('http://86.100.69.228/'); // e.g. for this will increase execution time because the site doesn't exists
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $status_code;
curl_close($ch);
?>

您可以通过在 curl_setopt 中设置 cURL 传输的CURLOPT_CONNECTTIMEOUT和CURLOPT_TIMEOUT选项来定义超时。如果网站关闭,cURL 将停止工作,你会抓住它!

如果您想

检查网站是否关闭CURL可能不是最佳选择,因为您没有检查完整的 URL,例如 http://eample.com/abx.phpx ...当您使用诸如Como http://www.comodo.com/secure-dns/do之类的"安全DNS"之类的服务时,所有网站都会返回200,因为请求会自动转发以进行验证,因此您将始终使用IP地址加载站点92.242.144.10搜索92.242.144.10

我的建议只是简单地ping服务器

function ping($host)
{
    exec(sprintf('ping -n 2 %s', escapeshellarg($host)), $res, $rval);
    return $rval === 0;
}
$result = ping("86.100.69.228");

直接检查插座

function pingSocket($host, $port = 80, $timeout = 3) {
    $fsock = fsockopen ( $host, $port, $errno, $errstr, $timeout );
    if (! $fsock) {
        return FALSE;
    } else {
        return TRUE;
    }
}
$result = pingSocket ( "86.100.69.228" );

大多数时候效果更好