PHP Socket超时连接检查
问题描述:
我是PHP的新手,所以我想知道是否有人可以帮助我。PHP Socket超时连接检查
我用很多工作做了一个脚本,即使很艰难,它也很容易,但我只是吮吸。
但是,如果我的网站是开启的,这个脚本就会显示它。
但是,如果它没有加载,它需要一百万小时来说。
如何设置脚本的最长时间?
谢谢柠多
(我已搜索周围堆栈溢出了很多的解决方案,这一点,所有的答案,我发现不清或者不是为我工作。)
<?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";
}
}
?>
答
你可以通过传递$errno
$connection = @fsockopen($host, $port, $errno, $errstr, 10); // timeout at 10 seconds
侧面说明,并$errstr
你现在可以retrie:定义在5th argument of the fsockopen
function的最大超时ve和随后输出多一点点的细节在你的错误:
echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\r\n";
echo '<p>Error Number ' . $errno . ': ' . $errstr . '</p>'."\r\n";
答
有一个快速浏览一下documentation,你会看到:参数5,float $timeout
,是能够做到这一点。
您还应该检查$connection
是否为false
。如果您的超时已到,或发生任何其他错误,则会发生这种情况。
查看文档http://php.net/fsockopen密切关注$ timeout – Maerlyn 2014-12-05 14:55:03