За последние 24 часа нас посетили 60163 программиста и 1744 робота. Сейчас ищут 1083 программиста ...

Как правильно получать ответы от сервера?

Тема в разделе "PHP для новичков", создана пользователем viv, 19 ноя 2011.

  1. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Всем привет.

    Подскажите пожалуйста, как правильно получать ответы от сервера?
    Я написал код, но он выводит только 301 хотя страницы доступны и должно быть 200. Если по одному урл проверять все ок, а если из файла барать , то не правильно работает. Вчем может быть фишка?

    код:
    PHP:
    1.  
    2. $file_array = file("url.txt");
    3. $max_colichestvo = count($file_array);
    4.  
    5. for ($k=0; $k<$max_colichestvo; $k++){
    6.    
    7.     $url = $file_array[$k];
    8.     $Headers = (get_headers($url));
    9.     echo "<br />".$Headers[0]; echo " $url";
    10. }
    11.  
     
  2. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    так это редирект, всего лишь, если дампнуть весь массив, то там будет HTTP/1.0 200 OK
    PHP:
    1.  
    2. <?php
    3. print '<pre>';
    4.     $url = "http://www.google.com";
    5.     $h = get_headers($url,0);
    6.     var_dump($h);
    7.  
    8. // [0]=>  string(18) "HTTP/1.0 302 Found"
    9. // ...
    10. //[10]=> string(15) "HTTP/1.0 200 OK"
    11.  
     
  3. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Извиняюсь, а как понять дампнуть весь массив?
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
  5. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    var_dump()
     
  6. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Благодарю за ссылку. Сегодня попробую.
     
  7. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Пробовал использовать выше написанный код. И он работает. Но когда я цепляю урл из файла выдает ошибки. В чем может быть дело?

    Код:
    PHP:
    1.  
    2. <?php
    3. $file_array = file("file.txt");
    4.  $max_colichestvo = count($file_array);
    5.  
    6.  for ($k=0; $k<$max_colichestvo; $k++){
    7.      
    8.      $url = $file_array[$k];
    9.      $h = get_headers($url,0);
    10.      var_dump($h);
    11.  
    12.  flush();
    13.  }
    14. ?>
    15.  
    Ошибка:
    PHP:
    1.  
    2. <?php
    3. 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
    4. bool(false)
    5. // Здесь я уже вроде как разобрался. Видимо в данном случае всегда нужно добавлять слеш в конце адреса: [url=http://google.ru/]http://google.ru/[/url] не знаю точно с чем это может быть связанно
    6. ?>
    7.  
     
  8. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Внимание:
    Проблему такого поведения решил. Оказывается когда из файла я беру ссылку с помощью file(), то в конце строки добавляется пробел! С помощью trim() я его убрал и вуаля :) все заработало!

    Но счастье длилось не долго. Ссылок много, а времени всего 30 секунд на выполнение.

    Вот такая ошибка вылетает:
    PHP:
    1.  
    2. <?php
    3. Fatal error:  Maximum execution time of 30 seconds exceeded in Z:\home\1.ru\www\ggg.php on line 22
    4. ?>
    5.  
    Как можно победить это?
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  10. viv

    viv Активный пользователь

    С нами с:
    19 ноя 2011
    Сообщения:
    33
    Симпатии:
    0
    Спасибо, разобрался :)