PHP套接字超时连接检查

时间:2014-12-05 14:50:01

标签: php sockets

我是PHP的新手,所以我想知道是否有人可以帮助我。

我使用大量的工作制作了一个剧本,即使很难,但这很简单,但我只是很糟糕。

但是,如果我的网站已启用,则此脚本会显示它。

但是如果它没有加载它就需要花费一百万个小时才能说出来。

如何设置脚本的最长时间?

非常感谢你

(我已经在Stack Overflow上搜索了很多解决方案,我找到的所有答案都不清楚或者不适合我。)

    <?php
$host = '127.0.0.1';
$ports = array(3000, 80);

foreach ($ports as $port)
{
    $connection = @fsockopen($host, $port);

    if (is_resource($connection))
    {
        if($port == 80)
        {
        echo "web: ONLINE";
        }

       if($port == 3000)
        {
        echo 'client: ONLINE';
        }

        fclose($connection);
    }

    else
    {
        echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\n";
    }
}
?>

2 个答案:

答案 0 :(得分:1)

您可以在5th argument of the fsockopen function

中定义最大超时
$connection = @fsockopen($host, $port, $errno, $errstr, 10); // timeout at 10 seconds

附注,通过传递$errno$errstr,您现在可以检索并随后在错误中输出更多细节:

echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\r\n";
echo '<p>Error Number ' . $errno . ': ' . $errstr . '</p>'."\r\n";

答案 1 :(得分:1)

快速查看documentation,您会看到:参数5 float $timeout能够做到这一点。

您还应该检查$connection是否为false。如果已达到超时,或者发生任何其他错误,则会发生这种情况。