![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Skrypt ma odpytywać poleceniem ping w protokole icmp co jakiś czas serwery proxy i musi działać szybko - max time to live 100ms - reszta serwerów mnie nie interesuje.
mam taki kod : Niestety ale w przypadku gdy host długo nie odpowiada trzeba też długo czekać. W shelu natomiast skrypt działa poprawnie i opcja i skraca czas oczekiwania. Wtedy na serwer kolega wrzucił mi fping. Zmieniłem kod na To nie działa w ogóle mimo, iż w shelu śmiga bez problemu. Od razu dodam, że Curl, fsockopen, socket_create odpada. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Nie działa, bo pewnie polecenie exec() jak i system() są zablokowane przez administrację hostingu (bo jak się domyślam pliki te nie działają Ci na serwerze w sieci).
-------------------- Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
|
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Serwer to ja mam dedykowany.
ok . udało mi się. Muszę jeszcze za pomocą preg_match_all wyłuskać ten czas ze zmiennej $odpowiedz. Nie wiem czemu ale jak mierzę czas w microtime() to jest 507 ms podczas gdy sam ping odpowiada w 37 ms - takie dane są w zmiennej odpowiedź w stringu , który zwraca. Znowu jak zmieniam wywołanie z fping na ping to czas mierzy się poprawnie obydwoma metodami. - różnice nie są już tak duże - rzędu 0.1 ms. Do mierzenia używam : list($usec, $sec) = explode(" ",microtime()); $getmicrotime = ((float)$usec + (float)$sec); $start = $getmicrotime; list($usec, $sec) = explode(" ",microtime()); $getmicrotime2 = ((float)$usec + (float)$sec); $stop = $getmicrotime; potem tylko wystarczy odjąć czas $stop - $start i wynik gotowy. Przeliczam to potem jeszcze na ms. Ciekawi mnie skąd jest taka różnica w odchyleniach czasowych. Dobra skończyłem pisać.
Skryptem tym można w miarę szybko odpytać kilkadziesiąt serwerów. Ja np. odpytuję serwery, które mam w bazie danych i nadaje im statusy aktywny - nie aktywny. Dzięki temu inne funkcje , które korzystają z serwera np. proxy mogą raz dwa dogadać się z serwerem. Dla mnie to tylko pierwszy etap sprawdzania czy dany serwer jest aktywny. Następnym etapem jest sprawdzenie czy serwer świadczy usługę proxy na porcie, który mam zapisany w bazie. Ja używam do tego Curl. Ten post edytował fiasko 5.12.2010, 18:06:49 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 1 Dołączył: 11.11.2008 Skąd: Kalisz Ostrzeżenie: (10%) ![]() ![]() |
Proszę, gotowiec od mnie:
Ten post edytował 1oBuZ 5.12.2010, 20:41:08 -------------------- W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi.
Dla komputera nie ma rzeczy niemożliwych z wyjątkiem tych, których od niego wymagamy. Liczba osób w zespole programistycznym ma tendencje wzrastające, niezależnie od ilości pracy. |
|
|
![]() ![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak tylko dodaj u siebie time to live. Bo w innym wypadku zobaczysz w jakim czasie uzyskasz tablicę wyników . Z tego co tam masz w kodzie to ping będzie czekał całą sekundę w przypadku nieobecności komputera w sieci. Przy 1000 komputerach to już tysiąc sekund. U mnie trwa to 100 sekund.
Teraz zabieram się za automatyczne wyszukiwanie serwerów proxy. Muszę napisać robota, który zindeksuje mi do bazy danych adresy ip + ich porty. Do tego znowu użyję curl i cron. Jak znacie jakieś dobre serwisy z listą serwerów proxy to dajcie mi namiar. będę miał na czym testować. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.05.2025 - 07:47 |