Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Przekroczenie limitu czasu - pomocy
Forum PHP.pl > Forum > Przedszkole
glogu
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'
maziak
Ta po przekroczeniu tego czasu sie wysypuje. Mozna ten czas przestawic w ustawieniach przegladarki. Tak wynika przynajmniej z moich doswiadczen. tongue.gif
Zobaczymy co napisza profesjonalisci tongue.gif

Jedno jest pewne, jezeli wykonujesz jakis prosty skrypt, a muli on ponad 60 sekund - cos jest nie tak z serwerem. Przeinstaluj/zmien czy co tam.
delfinium
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.
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.