【发布时间】:2020-08-14 16:33:07
【问题描述】:
我需要创建一个 PHP 脚本,该脚本可以成功检查网站当前是否在线/是否仍处于活动状态。
我有一个大约 3000 个网站的列表要检查,我想设置一个 CRON 作业来每天运行脚本以确保这些网站仍然处于活动状态。
我已经做了一些研究并使用这个例子构建了一些东西:
<?php
if (isDomainAvailible('http://www.css-tricks.com'))
{
echo "Up and running!";
}
else
{
echo "Woops, nothing found there.";
}
//returns true, if domain is availible, false if not
function isDomainAvailible($domain)
{
//check, if a valid url is provided
if(!filter_var($domain, FILTER_VALIDATE_URL))
{
return false;
}
//initialize curl
$curlInit = curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
//get answer
$response = curl_exec($curlInit);
curl_close($curlInit);
if ($response) return true;
return false;
}
?>
但它总是在检查 300 次左右后超时,我知道这可能是 PHP 执行问题,我想知道是否有更好或更快的方法来检查这些网站。
【问题讨论】:
-
它的工作脚本 & 执行单个网站检查需要 5 秒。
-
是的,这是一个工作脚本,但每个站点 5 秒乘以 3000 多个站点意味着 250 分钟,我认为这不是一个可行的解决方案?
-
您可以使用multi-curl 功能提高性能。从官方手册中了解如何正确使用它有点难以理解。所以最好使用多卷曲包装器,例如Rolling Curl Mini(插入!)。