[php] "ping" serwerow

0

ten skrypt ma za zadanie sprawdzac co okreslony czas pętlą nieskonczona podane serwery (tu dla przykladu onet i wp) na okresolnych portach (bycmoze wielu). W razie gdy dany host na danym porcie nie dziala to zostaje wygenerowany e-mail. na razie przysyla mi e-mail co 20 sekund a w sleep podalem zeby co 5 sekund i nie wiem czy ja robie jakis blad czy kolejkowanie maili kuleje. Prosze o wglad w algorytm i ew. uwagi

z gory dzieki

kod w trakcie poprawek
0

Taki sposob nie jest najlepszy, bo predzej czy pozniej serwer przerwie wykonywanie skryptu - Twoja nieskonczona petla praktycznie jest skonczona. Lepiej byloby wywolywac skrypt AJAXem co te 5 sekund.

Co do 5 sekund - wez pod uwage, ze fsockopen ma pewien timeout - znaczy jezeli sie nie polaczy to chwile jeszcze czeka, czy aby na pewno nic nie wroci.

PS. Technicznie rzecz biorac nie mozna pingowac na roznych portach ;)

0

Taki sposob nie jest najlepszy, bo predzej czy pozniej serwer przerwie wykonywanie skryptu - Twoja nieskonczona petla praktycznie jest skonczona. Lepiej byloby wywolywac skrypt AJAXem co te 5 sekund.
i tak i nie :) racja jest szansa ze serwer padnie, straci prąd albo padnie łącze, ale to będzie powiedzmy jeden z tych z niezawodnością 99,(9) %
na AJAX sie nie znam, czy do tego nie będzie konieczna przeglądarka? jezeli tak to odpada bo ten skrypt pójdzie z shella, gdzie cron bedzie pilnował jego działania

Co do 5 sekund - wez pod uwage, ze fsockopen ma pewien timeout - znaczy jezeli sie nie polaczy to chwile jeszcze czeka, czy aby na pewno nic nie wroci.
to mi wyjasniles, czyli algorytm jest OK?

0

Tak na oko jest ok, nie przygladalem sie za bardzo.

Nie chodzi mi o to, ze sie serwer zawiesi. Tylko o to, ze kazdy serwer ma pewien timeout. Jak do tego czasu nie zostanie strona wygenerowana, to wysyla np. 404 albo 500, itp. i konczy dzialanie skryptu. Na Apache jest to zazwyczaj 3 minuty.

Jak juz odpalasz z crona to niech skrypt robi jeden przebieg, a cron niech go uruchamia co te 5 sekund. Tak jest i bezpieczniej i logiczniej.

A w zwiazku z tym, ze cron to AJAX rzeczywiscie nie pasuje :)

0

Dodatkowo samo PHP ma czas timeout skryptu. Najlepiej będzie to zrobić na przykład cron'em lub na windows harmonogramem zadań.

0

Nie chodzi mi o to, ze sie serwer zawiesi. Tylko o to, ze kazdy serwer ma pewien timeout. Jak do tego czasu nie zostanie strona wygenerowana, to wysyla np. 404 albo 500, itp. i konczy dzialanie skryptu. Na Apache jest to zazwyczaj 3 minuty.
moze i na to sie cos poradzi

ini_set('memory_limit', '128M');

Tak na oko jest ok, nie przygladalem sie za bardzo.
dzieki

0

Nie ufaj memory_limit - to tez tylko wskazowka, serwer niekoniecznie moze na to pozwolic. A z mojego doswiadczenia wynika, ze bardzo rzadko sie to zdarza.

Uwierz nam - zdecydowanie lepiej to przerobic na skonczona petle.

0

ok dzieki, na pewno przetestuje oba rozwiazania
pozdrawiam

0

zrobilem upgrade do wersji 0.7 ale nie rozumiem dlaczego ten skrypt nie wysyla maila o nie działającym serwerze co 4 sekundy. Sprawdza tylko przy uruchomieniu a kolejnego odswiezenia sie nie doczekalem..
prosze o pomoc

nieaktualny kod
0

moze

error_reporting(0xFFFF);

no i nie wierz w zapewnienia o uptime 99%. Patrz -> http://avx.pl/klienci-o-nas/ - mi chyba (nie pamietam) tej ankiety nie podsyłali. Za to serwer się sypie co parę dni i bynajmniej nie na chwilę...

1 użytkowników online, w tym zalogowanych: 0, gości: 1