通过php中的特定端口(fsockopen)ping服务器

时间:2010-09-06 14:08:35

标签: php python bash sockets fsockopen

function checkServer($ domain,$ port = 80) {     global $ checkTimeout,$ testServer;

$status = 0;

$starttime = microtime(true);
$file = @fsockopen ($domain, $port, $errno, $errstr, $checkTimeout);
$stoptime = microtime(true);

if($file)
{
    fclose($file);
    $status = ($stoptime - $starttime) * 1000;
    $status = floor($status);
}
else
{
    $testfile = @fsockopen ($testServer, 80, $errno, $errstr, $checkTimeout);
    if($testfile)
    {
        fclose($testfile);
        $status = -1;
    }
    else
    {
        $status = -2;
    }
}

return $status;

}

testserver是google.sk,checkTimeout是10秒。这实际上有效,但是当我尝试在循环中运行它大约50次,并做其他事情(mysql查询和类似的东西)时,它并不慢,但它会导致我的CPU 100%加载,直到脚本结束。这是一个单独的apache进程,让我的CPU疯狂...所以我想问你是否有任何想法。也许有些提示如何在python或bash中做同样的事情将会受到赞赏。

感谢您的回复:)

1 个答案:

答案 0 :(得分:0)

使用CURL

这是一个如何将fsockopen转换为CURL的示例 PHP fsockopen to curl conversion

祝你好运