Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP - odczyt z pliku txt
Forum PHP.pl > Forum > PHP
tikky
Mam stronę www, która odczytuje dane z kilku plików txt na różnych serwerach.

Jak napisać skrypt, który będzie próbował odczytać dane z pliku .txt ze zdalnego serwera powiedzmy przez 5 sekund i jak nie uda mu się połączyć z serwerem w tym określonym czasie to wyświetli odpowiedni komunikat?
nospor
http://pl.php.net/manual/en/function.fsockopen.php
spojrz na ostatni parametr
sniezny_wilk
fopen" title="Zobacz w manualu PHP" target="_manual zwraca false, jeśli nie może otworzyć pliku, wystarczy:

  1. <?php
  2. $handle = fopen('plik');
  3.  
  4. if(!$handle){
  5. echo 'Błąd';
  6. }
  7. else{
  8. //robisz coś z plikiem
  9. }
  10. ?>
sobstel
fsockopen moim zdaniem prostrzy sposób. aby obsłuzyć timout przez fopen trzeba sięgnąc po funkcje streams" title="Zobacz w manualu PHP" target="_manual, np. stream_set_timeout" title="Zobacz w manualu PHP" target="_manual.
tikky
Cos dalej sobie nie radze.

  1. <?php
  2. $url ='tky.homeftp.net/rtb/temperatura.txt';
  3.  
  4. $fa = fopen($url,"r");
  5.  
  6. $fa = fsockopen("http://tky.homeftp.net", 80, &$num_error, &$str_error, 30);
  7. if(!$fa)
  8. { print "Temperatura nie dostepna: $str_error ($num_error)\n"; }
  9. else
  10. {
  11. fputs($fa,"GET /rtb/temperatura.txt HTTP/1.0\n\n");
  12. $answer=fgets($fa,128);
  13. ?>


Czemu powyzszy przyklad nie dziala?
Nie bardzo wiem jak to napisac zeby dzialalo.
widmo17
A może file_get_contents() ? albo file(), count() i for()? ;]
bim2
Przykro mi, wróżka już na wakacjach. Może powiedz jak nie działa? Co się pokazuje? Może biała strona? Może jakieś błędy?

PS. Zmień BBCode
pyro
Cytat(sniezny_wilk @ 17.06.2008, 13:09:43 ) *
[manual\]fopen\[/manual\] zwraca false, jeśli nie może otworzyć pliku, wystarczy:

  1. <?php
  2. $handle = fopen('plik');
  3.  
  4. if(!$handle){
  5. echo 'Błąd';
  6. }
  7. else{
  8. //robisz coś z plikiem
  9. }
  10. ?>


Bardzo dobry sposób na pokazanie "Błąd!" -> ZAWSZE!, nie podałeś parametrów do otwarcia pliku a po echo 'Błąd'; powinno się dać exit/die
tikky
Ale pisalem w poscie ze nie chodzi o to jak wyswietlic blad, tylko chodzi o specyficzny czas. Czyli jak wyswietlic blad jesli skrypt nie moze otworzyc pliku w ciagu powiedzmy 10 sekund.

A co do komunikatow bledu to podaje link do skryptu:
http://tky.homeftp.net/meteohobby/index2.php
nospor
komunikaty bledow sa dosc oczywiste.
  1. <?php
  2. $url ='tky.homeftp.net/rtb/temperatura.txt';
  3.  
  4. $fa = fsockopen("http://tky.homeftp.net", 80, $num_error, $str_error, 30);
  5. if(!$fa)
  6. { print "Temperatura nie dostepna: $str_error ($num_error)\n"; }
  7. else
  8. {
  9. fputs($fa,"GET /rtb/temperatura.txt HTTP/1.0\n\n");
  10. $answer=fgets($fa,128);
  11. }
  12. ?>
tikky
Dzieki za odpowiedz.
Teraz mi to działa choc nie wiem na ile poprawnie funcja jest napisana:
  1. <?php
  2. function check_temp($IP, $sciezka, $timeout=10)
  3. {
  4. $fa = @fsockopen($IP, 80, $num_error, $str_error, $timeout);
  5. if(!$fa)
  6.  {
  7.   //print "Temperatura nie dostepna: $str_error ($num_error)\n"; 
  8.   return "Błąd. Nie mogę odczytać $sciezka";
  9.  }
  10. else
  11.  {
  12.   $fp = fopen($sciezka, "r");
  13.   $odczyt = fread($fp, 10);
  14.   return $odczyt;
  15.  }
  16. }
  17. ?>

i przykładowe użycie:
  1. <?php
  2. echo check_temp('tky.homeftp.net','http://tky.homeftp.net/rtb/temperatura.txt',5);
  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.