Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cUrl] jak poprawnie identyfikować czy domena istnieje i czy serwer działa?
Forum PHP.pl > Forum > PHP
marcinpl87
Witam
Napisałem taki kod:
  1. <?
  2. $curl = curl_init(); //inicjuje curla
  3. curl_setopt($curl, CURLOPT_URL, $_GET['site']); //definiuje adres
  4. curl_setopt($curl, CURLOPT_HEADER, 1); //wlacza zwracanie naglowkow
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //przekierowanie wyjscia do zmiennej
  6. curl_setopt($curl, CURLOPT_TIMEOUT, 60); //timeout curla
  7. $wyjscie = curl_exec($curl); //przypisanie wyjscia do zmiennej
  8. curl_close($curl); //zamkniecie polaczenia przez curl
  9. echo $wyjscie;
  10. ?>

Problem w tym że gdy dodaję do sprawdzenia domenę która nie istnieje, to mój skrypt nie zwraca mi 404, ani żadnego sensownego komunikatu, tylko na jednym hostingu zwraca mi nagłówek 200OK oraz stronę http://d2.pl/ (to pewnie hostingodawca albo reseler), a na innym serwerze dostaję pustą stronę i nie ma nagłówka (czyli reakcja taka jak w przypadku kiedy curl łączy się z działającym serwerem ale serwer muli i mój skrypt łapie timeouta).
Jak przerobić ten skrypt żeby poprawnie identyfikować:
1) czy domena istnieje?
2) jeśli istnieje to czy serwer działa?
3) jeśli nie działa to czy jest to timeout czy błąd 404?

(Pisałem już kiedyś o curlu w temacie http://forum.php.pl/index.php?showtopic=132683 ale teraz mam trochę inny problem dlatego założyłem nowy wątek.)
pysio
1. checkdnsrr(domena,'A')
zwrocu true jesli istnieje

2. pingowac niema sensu - moze seerwer www dzialac a nie odpingowywac
mozna sprawdzic czy da sie pobrac strone startowa na serwerze

3. jesli zwroci 404 to blad 404
jesli nie to timeout

laohost
curl_error
curl_errno

I w praktyce:
  1. if (curl_errno($c))
  2. {
  3. echo 'Błąd: '.curl_error($c);
  4. }
  5. else
  6. {
  7. echo $wyjscie;
  8. }
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.