пинговать сервер через определенный порт (fsockopen) в php - PullRequest
0 голосов
/ 06 сентября 2010

функция 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 и тому подобное), это не медленно, но вызывает 100% загрузку моего процессора, пока сценарий не завершится. Это единственный процесс Apache, который сводит мой процессор с ума ... Так что я хотел спросить вас, есть ли у вас какие-либо идеи по этому поводу. может быть, какой-нибудь совет, как сделать то же самое в python или bash, будет оценен по достоинству.

Спасибо за ответы:)

1 Ответ

0 голосов
/ 06 сентября 2010

Использование CURL

это пример того, как преобразовать fsockopen в CURL PHP fsockopen в преобразование curl

Удачи

...