Próbuję stworzyć prosty skrypt równoważenia obciążenia i zastanawiałem się, czy można znaleźć czas odpowiedzi serwera na żywo? Mam na myśli to, czy można zmierzyć, ile czasu zajmuje serwerowi odpowiedź po wysłaniu żądania?

To, co staram się zrobić, jest dość proste, chcę wysłać żądanie do linku/serwera i odliczać, jeśli serwer zajęło więcej niż 5 sekund na odpowiedź, chciałbym wpaść na serwer zapasowy.

Zauważ, że nie musi być w czystym php, nie miałbym nic przeciwko używaniu innych języków, takich jak javascript, C/C++, asp, ale wolę to zrobić w PHP. jeśli jest to możliwe, czy mógłbyś wskazać mi właściwy kierunek, abym mógł o tym przeczytać.

Wyjaśnienie

To, co chcę zrobić, to nie pobierać pliku i sprawdzać, jak długo to trwało, moje serwery mają duże obciążenie i trochę czasu zajmuje im odpowiedź po kliknięciu pliku do pobrania. Chcę tylko zmierzyć czas potrzebny serwerowi na odpowiedź (w tej sytuacji jest to czas potrzebny serwerowi na odpowiedź i umożliwienie użytkownikowi pobrania pliku), a jeśli trwa to dłużej niż x sekund, powinien wrócić do serwer zapasowy.

0
Ahoura Ghotbi 21 październik 2012, 02:24

2 odpowiedzi

Najlepsza odpowiedź

Myślę, że powinieneś spojrzeć na curl_getinfo zwraca on następujący, który jest więcej niż potrzebujesz

url
content_type
http_code
header_size
request_size
filetime
ssl_verify_result
redirect_count
total_time  <------------------ what you need
namelookup_time
connect_time
pretransfer_time
size_upload
size_download
speed_download <------- Speed 
speed_upload
download_content_length
upload_content_length
starttransfer_time
redirect_time  <------ Can cause increase in time 
certinfo


Twoja edycja: if it takes longer than x seconds, it should fall back on a

Rozwiązanie: Wszystko, czego potrzebujesz, to ustawienie CURLOPT_CONNECTTIMEOUT na x seconds... To się zakończy i możesz przejść do innego zadania.

5
Baba 21 październik 2012, 03:40

Podobnie do curl możesz również użyć HttpRequest i ustawić opcję timeout na 5.

0
Al_ 21 październik 2012, 02:54