Php 用于检查SSL的函数的加载时间过长

Php 用于检查SSL的函数的加载时间过长,php,http,ssl,https,Php,Http,Ssl,Https,我有一个函数,可以检查ssl是否在我在这里找到的域上正常工作 function has_ssl($domain) { $ssl_check = fsockopen('ssl://' . $domain, 443, $errno, $errstr, 1000); $res = !!$ssl_check; if ($res == 1) { return true; } else { return false; } } 我正在寻

我有一个函数,可以检查ssl是否在我在这里找到的域上正常工作

function has_ssl($domain)
{
    $ssl_check = fsockopen('ssl://' . $domain, 443, $errno, $errstr, 1000);
    $res = !!$ssl_check;
    if ($res == 1) {
        return true;
    } else {
        return false;
    }
}
我正在寻找一个替代函数,因为加载这个函数花费的时间太长,当我必须检查数百个域的ssl时,它也会导致服务器超时错误。如果有人能给我一个替代功能,那将是非常棒的。

我很乐意帮助

首先,定义一个获取ssl证书信息的函数:

函数获取证书信息($domain){
$context=stream\u context\u create(['ssl'=>[
“捕获对等证书”=>true,
“捕获对等证书链”=>正确,
],
]);
$client=stream\u socket\u client(“ssl://“$domain.”:443“,$errno,$errstr,30,stream\u client\u CONNECT,$context);
如果($client==false){
返回false;
}
$params=stream\u context\u get\u params($client);
$cert=$params['options']['ssl']['peer_certificate'];
$cert\u info=openssl\u x509\u parse($cert);
返回$cert_info;
}
然后用它来检查多米安,如下所示:

$domain='example.com';
$cert\u info=get\u cert\u info($domain);
$validTo_time_t=$cert_info['validTo_time_t'];
$validTo_time_d=日期($Y-m-d H:i:s',$validTo_time_t);
if($validTo_time_d>date('Y-m-d H:i:s',now())回显“true”;
否则回声“假”;
而且,我只是在代码中检查了时间

您可以查看其他信息,如:证书发布者、证书发布时间……

希望它能起作用

祝你有愉快的一天

我很乐意帮忙

首先,定义一个获取ssl证书信息的函数:

函数获取证书信息($domain){
$context=stream\u context\u create(['ssl'=>[
“捕获对等证书”=>true,
“捕获对等证书链”=>正确,
],
]);
$client=stream\u socket\u client(“ssl://“$domain.”:443“,$errno,$errstr,30,stream\u client\u CONNECT,$context);
如果($client==false){
返回false;
}
$params=stream\u context\u get\u params($client);
$cert=$params['options']['ssl']['peer_certificate'];
$cert\u info=openssl\u x509\u parse($cert);
返回$cert_info;
}
然后用它来检查多米安,如下所示:

$domain='example.com';
$cert\u info=get\u cert\u info($domain);
$validTo_time_t=$cert_info['validTo_time_t'];
$validTo_time_d=日期($Y-m-d H:i:s',$validTo_time_t);
if($validTo_time_d>date('Y-m-d H:i:s',now())回显“true”;
否则回声“假”;
而且,我只是在代码中检查了时间

您可以查看其他信息,如:证书发布者、证书发布时间……

希望它能起作用


祝你有愉快的一天

你的超时时间太长了,大概15秒就足够了(超过15秒意味着出了问题)。此外,为了实现可扩展性,您需要某种多任务处理方式。我喜欢用它来完成这样的任务。

你的超时时间太长了,大概15秒就足够了(超过这个值意味着无论如何都有问题)。此外,为了实现可扩展性,您需要某种多任务处理方式。我喜欢使用它来完成这些任务。

这可以工作,但加载所需的时间相同:(这可以工作,但加载所需的时间相同:(