0

我正在做一个简单的 web 应用程序,用于显示某些服务器的状态,包括服务器的状态(开/关)。为了检查服务器的状态,我使用了“urlExists”函数,所以如果它返回一个真值,我将该服务器设为在线,在另一种情况下离线。

当我检查服务器时,如果它在线,该功能执行速度很快,但是当我正在检查的服务器离线时,检查下一个服务器需要很长时间。所以我试图限制函数的执行时间,如下所示:

...
set_time_limit(1);
$exists = false;
$exists = urlExists($url);
set_time_limit();
...

但是使用 set_time_limit() 的执行时间是相同的。我不知道 set_time_limit 是否用于做这种事情,但它是我唯一创立的。关于我该怎么做的任何想法?

提前致谢。

4

1 回答 1

2

试试这个使用 CURL 的函数:

function urlExists($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);

    $exists = curl_exec($ch);
    curl_close($ch);

    // If exec returns boolean, it's false, therefore the server is down/url doesn't exist.
    return !is_bool($exists);
}

如您所见,您可以使用 CURLOPT_CONNECTTIMEOUT 设置连接的时间限制。这样你就不需要 set_time_limit();

于 2012-09-07T16:23:04.227 回答