Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zatrzymać funkcję, zatrzymać nasłuchiwanie portu
marolek
post 2.04.2006, 10:21:21
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.04.2006

Ostrzeżenie: (0%)
-----


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).

Ten post edytował marolek 3.04.2006, 16:24:50
Go to the top of the page
+Quote Post
sf
post 2.04.2006, 10:29:23
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
marolek
post 3.04.2006, 16:23:26
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.04.2006

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
UsTeK
post 3.04.2006, 18:59:02
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.07.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
marolek
post 3.04.2006, 20:34:04
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.04.2006

Ostrzeżenie: (0%)
-----


Dzięki UsTeK, rozwiązanie które podałeś dokładnie spełnia moje oczekiwania biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:40