Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zatrzymać funkcję
Forum PHP.pl > Forum > PHP
marolek
Jak można zatrzymać działanie funkcji php odczytującej plik z serwera w Internecie, w przypadku gdy zbyt długo trwa próba połączenia z tym serwerem?
Przykładowo gdy próba połączenia z serwerem trwa ponad 2 sekundy, chciałbym zatrzymać funkcję i uruchomić ją ponownie z innym adresem pliku (na innym serwerze).
sf
Co to ma wspolnego z php5? Wracajac do pytania to poprostu sie ustawia limit oczekiwania na odpowiedz. http://pl2.php.net/manual/pl/function.curl-setopt.php - tutaj np. masz ta zmienna
marolek
Cytat(sf)
Co to ma wspolnego z php5?

Fakt, pomyliłem działy, sorry :-)

Trochę zmieniłem moją funkcję i teraz za pomocą fsockopen() łączę się z serwerem i nasłuchuje co się dzieje na pewnym porcie tego serwera.
I chciałbym teraz ograniczyć nie czas połączenia z tym serwerem, a czas nasłuchu. Jeśli serwer nie odpowie żadnym pakietem przez 2 sekundy to chciałbym przerwać funkcję.
Jak to zrobić?
UsTeK
Prosto z php.net :

  1. <?php
  2.  
  3. $fp = fsockopen("www.example.com", 80);
  4. if (!$fp) {
  5.  echo "Unable to open\n";
  6. } else {
  7.  
  8.  fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
  9.  stream_set_timeout($fp, 2); // <- właśnie o to Ci chodzi!
  10.  $res = fread($fp, 2000);
  11.  
  12.  $info = stream_get_meta_data($fp);
  13.  fclose($fp);
  14.  
  15.  if ($info['timed_out']) {
  16.  echo 'Connection timed out!';
  17.  } else {
  18.  echo $res;
  19.  }
  20.  
  21. }
  22.  
  23. ?>



Pozdrawiam,
UsTeK
marolek
Dzięki UsTeK, rozwiązanie które podałeś dokładnie spełnia moje oczekiwania biggrin.gif
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.