Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Curl i działanie serwera
Forum PHP.pl > Forum > PHP
linx
Witam,
szukałem długo i namiętnie.
Niestety nie znalazłem niczego podobnego, a mianowicie skryptu który by sprawdzał czy host jest osiągalny czy nie.
Monitorowanie strony.

Wymyśliłem coś takiego, w sumie działa.
Tylko nie jestem pewien jednej rzeczy a mianowicie dodałem do skryptu curl_setopt($curld, CURLOPT_RETURNTRANSFER, 1); kiedy to jest na stronie nic sie nie wyś. i prawidłowo, do bazy idą wpisy.
Kiedy tego niema na stronę ładują sie wszystkie strony które chce monitorować.

Czy tak może zostać?? Czy to nie obciąża jakoś dodatkowo serwera??

Pozdrawiam i dzięki za pomoc.

A jeszcze jedno w jaki sposób można sprawdzić jak bardzo obciąża serwer dany skrypt??

A i jeszcze jedno dopiero się uczę PHP wiec krytyka z jakąś pomocą techniczną mile widziana.


  1. <?php
  2. require ('pliki_zrodlowe/config.php');
  3. require ('pliki_zrodlowe/DataGodzina.php');
  4. require ('pliki_zrodlowe/polaczenie.php');
  5. //zmienne
  6. $czas = $data_godzina_db;
  7. //zmienne_eof
  8. $pobranie="SELECT * FROM up_strona";
  9. $zapytanie=mysql_query($pobranie);
  10. $liczba_wpisow=mysql_numrows($zapytanie);
  11. //petla_while
  12. $i=0;
  13. while ($i < $liczba_wpisow) {
  14. $id=mysql_result($zapytanie,$i,"strona_numer");
  15. $strona=mysql_result($zapytanie,$i,"www");
  16. //curl
  17. $curld = curl_init($strona);
  18. curl_setopt($curld, CURLOPT_RETURNTRANSFER, 1);
  19. curl_exec($curld);
  20. $blad=curl_errno($curld);
  21. curl_close($curld);
  22. //curl_eof
  23. //zapis_do_bazy
  24. $wpis = "INSERT INTO up_test VALUES ('','$id','$blad','$czas')";
  25. mysql_query($wpis);
  26. //zapis_do_bazy_eof
  27. $i++;
  28. }
  29. //petla_while_eof
  30. ?>
Cezar708
Cytat(linx @ 16.03.2008, 13:22:04 ) *
Niestety nie znalazłem niczego podobnego, a mianowicie skryptu który by sprawdzał czy host jest osiągalny czy nie.


rozumiem, że chodzi po prostu o monitorowanie tego, czy dane strony działają (nie bezpośrednio hosty)

Cytat(linx @ 16.03.2008, 13:22:04 ) *
Tylko nie jestem pewien jednej rzeczy a mianowicie dodałem do skryptu curl_setopt($curld, CURLOPT_RETURNTRANSFER, 1); kiedy to jest na stronie nic sie nie wyś. i prawidłowo, do bazy idą wpisy.

Kiedy tego niema na stronę ładują sie wszystkie strony które chce monitorować.

Czy tak może zostać?? Czy to nie obciąża jakoś dodatkowo serwera??


to jest dodatkowo wykonana funkcja, więc co by nie było na pewno trochę dociąży serwer (chociażby na wywołanie) jednakże wg mnie nie jest to nie wiadomo jakie większe obciążenie, więc może zostać. Ponieważ nie sądzę abyś chciał ładować na swoją stronę wszystkie monitorowane strony. Poza tym czas stracony na ładowaniu się tej strony całkowicie pozostanie skompensowany przez czas przesyłu zwiększonej kodu HTML (o monitorowane strony) do przeglądarki.

Cytat(linx @ 16.03.2008, 13:22:04 ) *
A jeszcze jedno w jaki sposób można sprawdzić jak bardzo obciąża serwer dany skrypt??


jest wiele sposobów, najbardziej prosty i często wystarczający to po prostu taki:
  1. <?php
  2. // wywołanie funkcji microtime()
  3. $start = microtime(true);
  4.  
  5. // wykonanie badanego kodu
  6. executeBlackBox();
  7.  
  8. // raport końcowy:
  9. echo 'czas skryptu to: '.(microtime(true)-$start).' sekund';
  10. ?>

Cytat(linx @ 16.03.2008, 13:22:04 ) *
A i jeszcze jedno dopiero się uczę PHP wiec krytyka z jakąś pomocą techniczną mile widziana.


jeśli chcesz jedynie sprawdzić czy dana strona istnieje czy nie to od PHP5 jest dostępna funkcja get_headers() w Twoim przypadku będzie najszybsza, a jej zastosowanie w Twoim kodzie to:

  1. <?php
  2. require ('pliki_zrodlowe/config.php');
  3. // Twój wcześniejszy kod 
  4. while ($i < $liczba_wpisow) {
  5. $id=mysql_result($zapytanie,$i,"strona_numer");
  6. $strona=mysql_result($zapytanie,$i,"www");
  7. /// sprawdzanie czy strona jest dostępna 
  8. $headers = get_headers($strona);
  9. if ( $headers == 'HTTP/1.1 200 OK' ){
  10. $blad = 'strona jest dostępna';
  11. } else {
  12. $blad = 'strona NIE JEST DOSTEPNA';
  13. }
  14. //zapis_do_bazy
  15. $wpis = "INSERT INTO up_test VALUES ('','$id','$blad','$czas')";
  16. mysql_query($wpis);
  17. //zapis_do_bazy_eof
  18. $i++;
  19. }
  20. //petla_while_eof
  21. ?>


pozdrawiam
linx
Dzięki za naprowadzenie.

nie do końca mi działało i zmieniłem z 'HTTP/1.1 200 OK' na TREU i jest ok.

  1. <?php
  2. $headers = @get_headers($strona);
  3. if ( $headers == TRUE )
  4. {
  5. $blad = '1';
  6. } else {
  7. $blad = '0'; 
  8. }
  9. ?>


Tylko teraz pytanie dla pewności jeśli strona www będzie dostępna będzie TRUE (1) jeśli nie będzie dostępna,
tzn. nie będzie się wyświetlać ale serwer będzie odpowiadać na PING to wartość będzie FALSE (0)questionmark.gif?


Pozdrawiam i jeszcze raz dzięki za pomoc.
Cezar708
Cytat(linx @ 16.03.2008, 14:43:58 ) *
  1. <?php
  2. $headers = @get_headers($strona);
  3. if ( $headers == TRUE )
  4. {
  5. $blad = '1';
  6. } else {
  7. $blad = '0'; 
  8. }
  9. ?>

oj nie... miałem tam mały błąd w kodzie... musi być:

  1. <?php
  2. if ( $headers[0] == 'HTTP/1.1 200 OK' ){
  3. ?>


zamiast

  1. <?php
  2. if ( $headers == 'HTTP/1.1 200 OK' ){
  3. ?>


bo

  1. <?php
  2. if ( $headers == TRUE )
  3. ?>


zawsze będzie miało zrzut na boolowskie TRUE więc wynik zawsze będzie pozytywny.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.