0

function checkServer($ domain、$ port = 80){グローバル$ 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;

}

テストサーバーはgoogle.skで、checkTimeoutは10秒です。これは実際には機能しますが、ループで約50回実行し、他の処理(mysqlクエリなど)を実行しようとすると、遅くはありませんが、スクリプトが終了するまでCPUの負荷が100%発生します。それは私のCPUを狂わせる単一のapacheプロセスです...それで私はあなたがそれについて何か考えがあるかどうかあなたに尋ねたいと思いました。おそらく、Pythonやbashなどで同じことを行うためのヒントをいただければ幸いです。

回答ありがとうございます:)

4

1 に答える 1

0

CURLを使用する

これは、fsockopenをCURLに変換する方法の例です 。PHPfsockopenをcurlに変換する方法です。

幸運を

于 2010-09-06T15:29:03.200 に答える