YardalGedal
@YardalGedal
yeah boy

Правильно ли рассчитывать ping таким способом?

Есть небольшая функция с помощью которой я проверяю отвечает ли сервер:
public function check_url($url) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 2);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        if($httpcode>=200 && $httpcode<300 or $httpcode == 302) {
            return 'alive';
        } else {
            return 'dead';
        }
    }


Будет ли правильным замерять время ответа от сервера с помощью этой функции, но запоминая вначале microtime(true), а перед return выводить разность с текущим microtime(true) и умножать это всё на тысячу?
Если пинговать таким образом обычные домены то вроде бы всё правильно, но если я пробую пинговать какие-то файлы(флешки .swf), то пинг становится в ~10 раз больше.
  • Вопрос задан
  • 456 просмотров
Решения вопроса 2
DevMan
@DevMan
пинг - это проверка доступности сервера, получать ответ для этого необязательно.
соответственно, нечто подобное будет быстрее:
$host = '193.33.186.70'; 
$port = 80; 
$waitTimeoutInSeconds = 1; 
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){   
   // It worked 
} else {
   // It didn't work 
} 
fclose($fp);

у вас же не пинг, а проверка адресов. для ускорения поменять CURLOPT_RETURNTRANSFER на false и проверять только код ответа.
Ответ написан
@maxtm
Make money, not job
Если нужно именно время ответа, то совет, уберите лимиты, и смотрите на

CURLINFO_TOTAL_TIME - Полное время выполнения последней операции в секундах.
CURLINFO_NAMELOOKUP_TIME - Время разрешения имени сервера в секундах.
CURLINFO_CONNECT_TIME - Время, затраченное на установку соединения, в секундах

Данные можно получить через curl_getinfo
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы