【发布时间】:2012-03-13 22:58:49
【问题描述】:
我使用 PHP 从数据库中获取 url 列表。每个 url 都由 php 中的 Check_URL 函数检查,该函数使用 curl 来检查网站是否处于活动状态。
function Check_URL($url) {
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERAGENT, $agent);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 3);
$page = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode >= 200 && $httpcode <= 301) {
return true;
} else {
return false;
}
}
不幸的是,页面加载需要很长时间。我读过 curl_multi_init();可能是我的解决方案,但我不确定如何将它实施到我所拥有的中。提前致谢。
【问题讨论】:
-
所以当你在你的服务器上加载一个页面时,这个函数会被调用并检查一些url?这意味着不仅您的页面正在加载,而且您还在等待 CURL 加载 X url。您正在加载多少个网址?您可能想考虑让其他东西触发您的脚本,例如页面上的图像。
-
这是你应该在后台真正做的事情,与为用户呈现页面的线程分开。将这些 URL 的任务扔到 beanstalkd 中,并编写一个 worker 来测试它们并将结果存储在您的数据库中。