Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Przekroczenie limitu czasu - pomocy
glogu
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 1.07.2007

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


W jaki sposób sprawdzić, czy połaczenie z serwerem może przekroczyć limit oczekiwania.
Pytam, bo w trakcie pracy z funkcją file_get_contents wyskakuje mi komunikat następującej streści:
  1. Warning: file_get_contents(http://www.conseil-pologne.com) [function.file-get-contents]:
  2. failed to open stream: Próba połšczenia nie powiodła się, ponieważ połšczona strona nie
  3. odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połšczenie
  4. nie powiodło się, ponieważ połšczony host nie odpowiedział.
  5.  
  6. Fatal error: Maximum execution time of 60 seconds exceeded


Przypuszczam że wynika to z tego, iż serwer istnieje ale nie można się z nim połaczyć.
A może się mylę? Bo nie wiem czy to normalne, że z powodu tego przekroczenia limitu cały skrypt się wysypuje'

Ten post edytował glogu 14.07.2007, 00:41:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
delfinium
post
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


Zamiast file_get_contents użyj CURL.

  1. <?php
  2. function getPage( $pageUrl, $maxTime ) {
  3. $curl = curl_init( $pageUrl );
  4. curl_setopt( $curl, CURLOPT_RETURNTRANSFER,);
  5. curl_setopt( $curl, CURLOPT_TIMEOUT, $maxTime );
  6. $result['content'] = curl_exec( $curl );
  7. $result['pagesize'] = curl_getinfo( $curl, CURLINFO_SIZE_DOWNLOAD );
  8. $result['httpcode'] = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
  9. curl_close( $curl );
  10. return $result;
  11. }
  12. $result = getPage( 'http://www.conseil-pologne.com', 60 );
  13. ?>

Oczywiście tutaj możesz sobie dowolnie ustawić maksymalny czas połączenia ale pamiętaj, że nie może on być dłuższy niż całkowity czas na wykonanie skryptu bo też się wywali. W zmiennej $result['pagesize'] będziesz miał liczbę pobranych bajtów, jeśli będzie 0 i $result['httpcode'] będzie 0 to znaczy, że się nie idzie połączyć w ustawionym czasie. Ale w ten sposób skrypt Ci się nie wywali po przekroczeniu czasu połączenia.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.09.2025 - 12:57