Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Odczytywanie pliku tylko przez kilka sekund
Forum PHP.pl > Forum > Przedszkole
Zwariowany
Czy da się stworzyć skrypt, który odczyta plik, a jeżeli nie załaduje się on np w 10 sekund to przestaje go ładować?

pozdrawiam
wookieb
Ja robiłem coś takiego curl-em i dodawałem do niego opcje CURLOPT_TIMEOUT ( http://php.net/curl_setopt )
, ponieważ file_get_contents + ini_set('default_socket_timeout') nie działało, lecz nie próbowałem zastąpić file_get_contents funkcja fopen ale ty to możesz zrobic i nam powiedzieć smile.gif
Zwariowany
a nie znacie jakieś prostszej metody? programuje w php od ponad roku, a tej funkcji nie znam i nie wiem zbytnio jak zastosować smile.gif
wookieb
To są własnie najprostsze metody.
Zwariowany
i załóżmy, że chciałbym zrobić require onet.pl, a on długo się ładuje (powyżej np.10 sekund), to wtedy skrypt nic nie wyświetla i przestaje ładować onet.pl. To funkcja wykona takie coś?
wookieb
Tak. Ale pamietaj ze skrypt sprobuje pobrac TYLKO html z adresu http://onet.pl a nie bedzie pobierał obrazków itd.
Zwariowany
  1. <?php
  2. curl_setopt($ch, CURLOPT_URL, 'http://onet.pl/'); 
  3. $strona = curl_exec($ch);
  4. ?>


I co teraz bym musiał zrobić żeby strona onet.pl się wyświetliła i te 10 sekund jak ustawić ( czy automatycznie się ustawia? ) questionmark.gif
wookieb
Cytat(wookieb @ 22.06.2009, 15:58:48 ) *
Ja robiłem coś takiego curl-em i dodawałem do niego opcje CURLOPT_TIMEOUT ( http://php.net/curl_setopt )

Udajesz czy serio nie rozumiesz co sie do ciebie mówi?
Poza tym zapraszam do kursu curl http://wortal.php.pl/phppl/wortal/artykuly...i_protokol_http
Zwariowany
  1. <?php
  2. $ch = curl_init();
  3.  
  4. curl_setopt($ch, CURLOPT_URL, "http://onet.pl/");
  5. curl_setopt($ch, CURLOPT_HEADER, false);
  6.  
  7. curl_exec($ch);
  8.  
  9. curl_close($ch);
  10. ?>


Takie coś mam, i teraz pytanie jak wyświetllić plik, żeby to po prostu zrobiło jakby require względem onet.pl
PawelC
  1. <?php
  2. $wynik=curl_exec($ch);
  3. echo $wynik // lub print_r($wynik);
  4. ?>

A gdzie masz ustawienie limitu czasu o którym mówił Ci wookieb, czyli
  1. <?php
  2. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  3. ?>

Tu gdzie jest 10 ustawisz limit czasu.
Zwariowany
Exploit

taki skrypt:

  1. <?php
  2. $ch = curl_init();
  3.  
  4. curl_setopt($ch, CURLOPT_URL, "http://onet.pl/");
  5. curl_setopt($ch, CURLOPT_HEADER, false);
  6. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  7.  
  8. $wynik=curl_exec($ch);
  9.  
  10. echo $wynik;
  11.  
  12. curl_close($ch);
  13. ?>


wywala jedynie w linku: onet.pl i poza linkiem liczbę 1. A mi chodzi żeby wywalał kod onetu.
PawelC
Faktycznie zamiast wczytać kod to wywalał link do onetu. Zobacz tak:
  1. <?php
  2. $ch = curl_init('http://www.onet.pl/');
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  4. curl_setopt($ch, CURLOPT_HEADER, false);
  5. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  6. $wynik=curl_exec($ch);
  7. echo $wynik;
  8. curl_close($ch);
  9. ?>
Zwariowany
Powiedzcie mi teraz jedną rzecz. Jak teraz serwer będzie coś wczytywał, a to będzie się baaardzo długo wczytywało to serwer to oleje tak?
PawelC
Po 10 sekundach przerwie działanie smile.gif
Zgodnie z czasem który jest tu podany:
  1. <?php
  2. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  3. ?>
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.