Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy mozna wylaczyc prezentacje bledow ?
Forum PHP.pl > Forum > Przedszkole
telemach
mam prosta strone A ktora przy pomocy


wyswietla fragment zawartosci strony B

problem w tym ze kiedy strona B lezy lub sie nie laduje to na stronie A wyswietlaja sie wizytujacemu bledy
z podaniem sciezki lokalnej strony A oraz nazwy serwera strony B

czy jest jakas taka mozliwosc w PHP zeby zadeklarowac ze w przypadku gdy strona B jest nieosiagalna to
wtedy nie sa prezentowane bledy typu

  1. Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xxxxx/domains/xxxxx/public_html/xxxxx.php on line 3
  2.  
  3. Warning: file_get_contents(http://www.xxxxx.pl/xxxx.php) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xxxxx/domains/xxxxx/public_html/xxxxx.php on line 3


strone mam na darmowym hostingu wiec zakladam ze nie moge ingerowac w konfiguracje PHP i szukam jakiegos obejscia problemu poprzez poprawne kodowanie

jak podejzewam jest dostep do .htaccess zatem czy dopisanie tego

php_value display_errors 1
php_value display_startup_errors 1

rozwiaze sprawe ?
Pawel_W
powinno wystarczyć dodanie @ przed file_get_contents
telemach
na razie dziala jednak czy mozna sie spodziewac ze przestanie na jakims innym serwerze lub przy innym bledzie ?
erix
A ciężko w dokumentacji sprawdzić...?

Lepiej by było najpierw sprawdzić, czy host odpowiada/istnieje i to wyłapać niż po chamsku ukrywać błąd.
telemach
Cytat(erix @ 31.08.2009, 12:33:49 ) *
A ciężko w dokumentacji sprawdzić...?


nie jest ciezko jak wiadomo czego sie szuka

Cytat(erix @ 31.08.2009, 12:33:49 ) *
Lepiej by było najpierw sprawdzić, czy host odpowiada/istnieje i to wyłapać niż po chamsku ukrywać błąd.


jaka komenda to sie sprawdza ? to potestuje na jakichs przykladach
Pawel_W
file_exists
sprawdzi cim czy plik, który chcesz pobrać istnieje
thek
File_exist z tego co mi wiadomo nie współpracuje z url winksmiley.jpg Tak więc jeśli plik jest na innej stronie to może być "mały problem" winksmiley.jpg Lepiej użyć fopen lub fsockopen
Przykładowy kod masz tutaj winksmiley.jpg
  1. try {
  2. if( $side=fopen("adres_do_pliku", "r") ) {
  3. echo file_get_contents("adres_do_pliku");
  4. fclose($side);
  5. } else
  6. throw new Exception('IOERROR');
  7. } catch(Exception $e) {
  8. echo "Brak połączenia z plikiem";
  9. }


EDIT... Bysmy zapomnieli chłopaki... Niech jeszcze zobaczy manual do error_reporting winksmiley.jpg
erix
Cytat
Tak więc jeśli plik jest na innej stronie to może być "mały problem"

Jaki problem? fsockopen i kod == 200 => file_exists=true
thek
Erix... To sprawdź wywołanie
  1. file_exists("http://www.wp.pl")
winksmiley.jpg Chodzi mi o to, że file_exists działa tylko dla plików lokalnych a nie zdalnych. Wywołanie pliku jak to z wp.pl podałem wywali Ci FALSE zawsze. Tak po prostu się nie da i trzeba albo fopen, albo fsockopen użyć.
telemach
dalej problem bo jedne strony zwracaja kod 302 a nie tylko 200, fopen tez sie wywala podobnie jak fsockopen

  1. Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xxxx/domains/xxxxx/public_html/xxx.php on line 3
  2.  
  3. Warning: fsockopen() [function.fsockopen]: unable to connect to www.edycja.pl:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /home/xxxx/domains/xxxxx/public_html/xxx.php on line 3
  4. php_network_getaddresses: getaddrinfo failed: Name or service not known (0)


mozecie sami sprawdzic, dzisiaj wywalila sie strona www.edycja.pl i skrypt nie odczyta kodu ani sie nie polaczy wiec zaczynaja sie schody
i zastanawiam sie czy moze nie przejsc na curl'a bo przydalby sie tez jakis timeout rzedu 2-3 sekund max na sprawdzenie czy serwer dziala czy nie bo celem jest ustalic czy docelowy plik da sie pobrac czy nie

znalazlem cos takiego

http://wortal.php.pl/wortal/artykuly/pomys...rwera_lokalnego
pyro
ale po co wy coś kombinujecie, przecież dalej można zostać przy file_get_conents()

  1. if(!($contents = @file_get_contents($url)))
  2. {
  3. // informacja, ze pobranie zawartości się nie udało (lub jakieś inne czynności)
  4. echo 'Pobranie zawartości strony nie powiodło się.';
  5. }
  6. else
  7. {
  8. // Analogicznie. Tyle że pobranie zawartości strony powiodło się
  9. echo $contents;
  10. }


I nic tu po chamsku nie ukrywamy.
thek
Tyle, że curl także sprawdza połączenie. Musisz bowiem poznać kody zwracane przez funkcje o jakich mówimy. 200 oznacza prawidłowe połączenie. Każdy inny także coś oznacza. Jedne mówią o braku hosta, inne o przekierowaniu. Poczytaj o tej numeracji to będziesz wiedział jak reagować na każdą z sytuacji.
EDIT: Pyro... Nie zawsze człowiek chce pobrać stronę. Czasem chce tylko wiedzieć czy ona "stoi". Po co ją wtedy ściągać ? winksmiley.jpg
telemach
wprawdzie bez timeouta ale sposob pyro dziala prosto i sprawnie

thek - jestes w stanie przedstawic rozwiazanie problemu ? tak zeby przy takiej sytuacji jaka jest obecnie z www.edycja.pl nie wywalo bledow bo obecnie tak sie wlasnie dzieje
erix
Cytat
Chodzi mi o to, że file_exists działa tylko dla plików lokalnych a nie zdalnych.

A wiesz, co to jest równoważność? Wytłumaczyłem na zdrowy chłopski rozum.
telemach
tak przy okazji to czy PHP przechowuje ? w pamieci tymczasowej to co zostalo pobrane czy tez za kazdym razem kiedy uzywam
w stosunku do jednej i tej samej strony to skrypt ponownie dokonuje sciagniecia zawartosci ?

pytam bo rozumiem ze jak przypisze zawartosc do zmiennej to juz nie bedzie pobieral ale nie wiem jak wyglada sytuacja przy powtarzalnosci polecenia
pyro
Cytat(thek @ 31.08.2009, 18:08:31 ) *
EDIT: Pyro... Nie zawsze człowiek chce pobrać stronę. Czasem chce tylko wiedzieć czy ona "stoi". Po co ją wtedy ściągać ? winksmiley.jpg


Cytat
wyswietla fragment zawartosci strony B


Ktoś jeszcze w temacie podał przykład również z pobraniem strony, więc założyłem, że autor CHCE pobrać zawartość strony.

Cytat(telemach @ 31.08.2009, 19:32:22 ) *
tak przy okazji to czy PHP przechowuje ? w pamieci tymczasowej to co zostalo pobrane czy tez za kazdym razem kiedy uzywam [PHP] pobierz, plaintext
  1. file_get_contents
[PHP] pobierz, plaintext w stosunku do jednej i tej samej strony to skrypt ponownie dokonuje sciagniecia zawartosci ?

pytam bo rozumiem ze jak przypisze zawartosc do zmiennej to juz nie bedzie pobieral ale nie wiem jak wyglada sytuacja przy powtarzalnosci polecenia


ile razy wywołasz file_get_contents dla strony, tyle razy zostanie ona pobrana.
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.