Всем привет. Подскажите пожалуйста, как правильно получать ответы от сервера? Я написал код, но он выводит только 301 хотя страницы доступны и должно быть 200. Если по одному урл проверять все ок, а если из файла барать , то не правильно работает. Вчем может быть фишка? код: PHP: $file_array = file("url.txt"); $max_colichestvo = count($file_array); for ($k=0; $k<$max_colichestvo; $k++){ $url = $file_array[$k]; $Headers = (get_headers($url)); echo "<br />".$Headers[0]; echo " $url"; flush(); }
так это редирект, всего лишь, если дампнуть весь массив, то там будет HTTP/1.0 200 OK PHP: <?php print '<pre>'; $url = "http://www.google.com"; $h = get_headers($url,0); var_dump($h); // [0]=> string(18) "HTTP/1.0 302 Found" // ... //[10]=> string(15) "HTTP/1.0 200 OK"
Пробовал использовать выше написанный код. И он работает. Но когда я цепляю урл из файла выдает ошибки. В чем может быть дело? Код: PHP: <?php $file_array = file("file.txt"); $max_colichestvo = count($file_array); for ($k=0; $k<$max_colichestvo; $k++){ $url = $file_array[$k]; $h = get_headers($url,0); var_dump($h); flush(); } ?> Ошибка: PHP: <?php Warning: get_headers([url=http://google.ru]http://google.ru[/url] ) [function.get-headers]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in Z:\home\1.ru\www\ggg.php on line 14 bool(false) // Здесь я уже вроде как разобрался. Видимо в данном случае всегда нужно добавлять слеш в конце адреса: [url=http://google.ru/]http://google.ru/[/url] не знаю точно с чем это может быть связанно ?>
Внимание: Проблему такого поведения решил. Оказывается когда из файла я беру ссылку с помощью file(), то в конце строки добавляется пробел! С помощью trim() я его убрал и вуаля все заработало! Но счастье длилось не долго. Ссылок много, а времени всего 30 секунд на выполнение. Вот такая ошибка вылетает: PHP: <?php Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\1.ru\www\ggg.php on line 22 ?> Как можно победить это?