За последние 24 часа нас посетил 91451 программист и 2709 роботов. Сейчас ищет 1451 программист ...

Парсер и отправка на сервер.

Тема в разделе "PHP для новичков", создана пользователем freelancer.rnd, 5 май 2014.

  1. freelancer.rnd

    freelancer.rnd Новичок

    С нами с:
    5 май 2014
    Сообщения:
    33
    Симпатии:
    0
    Всем Здравствуйте.
    Меня попросили сделать парсер для сайта, но проблема не парсере.
    В общем суть в том.
    В файле есть доменные имена , я их извлекаю, и по одной отправляю на сервер(На другой сайт через API ) get запросом ,в ответ я получаю данные.
    Проблема в том что когда я отправляю больше двух доменов начинаются проблемы и PHP Выдает ошибки,Якобы сервер долго отвечал , Как можно с этим разобраться?

    Код (Text):
    1. <?
    2. $type = ($_FILES[somename][type]); /* Получаем тип загружаемого файла */
    3.  
    4. if ($type == "text/plain"){ /* файл подходит */
    5. $file_put = $_FILES[somename][tmp_name];    /* получаем путь к файлу */
    6. $Parse_file = file_get_contents("$file_put");   /* загружаем файл в переменну */
    7.  
    8. $list_parse = (explode("\n", $Parse_file));  /* разделяем домены */
    9.     for($i = 0; $i < count($list_parse);$i++){  /* цикл обробтки каждого домена */
    10.         $list_parse[$i] = str_replace(' ', '', $list_parse[$i]);    /* убераем пробелы */
    11.         Echo "$list_parse[$i]<br>"; /* выводим домен коотрый обрабатываем (только для разроботки) */
    12.         $domen = "http://xml.linkpad.ru/?url=$list_parse[$i]";  /* пишем get запрос и помещаем в переменную */
    13.         Echo "$domen";  /* выводим ссылку которая получилось(только для разроботки) */
    14.         Echo "<br>"; /* переходим на другую строку */
    15.         echo file_get_contents("$domen");   /* отправляеи get запрос и выводим полученные данные .[ВОТ ТУТ И НАЧИНАЮТСЯ ОШИБКИ КОГДА ДОМЕНОВ БОЛЬШЕ ЧЕМ 2] */
    16.         Echo "<br>________________<br>";
    17.     }
    18. }
    19. else{
    20. Echo "Не верный файл для парсинга";  /* файл не подходит */
    21. }
    22.  
    23. ?>
    24.  
    25. <form action="" method = "post" enctype = 'multipart/form-data'>
    26.   <input type = "file" name = "somename" />
    27.   <input type = "submit" value = "Загрузить" />
    28. </form>
    Файл текст доменов


    • zenit.ru
      103-astana.ru
      ak-madi.ru
      asylmura.ru
      inicom.ru
      madlen.ru
      pizzahut.ru
      turkacadem.ru
      volki.ru
      presscenter.ru
      tildaryn.ru
      sitr.ru
    Как можно обойти эту проблемму?

    Добавлено спустя 8 минут 52 секунды:
    Уп, Сори, Такие проблемы только на денвере , на хостинге нормально работает.

    Добавлено спустя 45 минут 37 секунд:
    Теперь у меня другая проблема,
    Код (Text):
    1.  
    2. if ($type == "text/plain"){   /* файл подходит */
    3. $file_put = $_FILES[somename][tmp_name];   /* получаем путь к файлу */
    4. $Parse_file = file_get_contents("$file_put");   /* загружаем файл в переменную */
    5.  
    6. $list_parse = (explode("\n", $Parse_file));    /* разделяем домены */
    7.    for($i = 0; $i < count($list_parse);$i++){   /* цикл обработки каждого домена */
    8.       $list_parse[$i] = str_replace(' ', '', $list_parse[$i]);   /* убираем пробелы */
    9.       Echo "$list_parse[$i]<br>";   /* выводим домен который обрабатываем (только для разработки) */
    10.       $domen = "http://xml.linkpad.ru/?url=$list_parse[$i]";   /* пишем get запрос и помещаем в переменную */
    11.       Echo "$domen";   /* выводим ссылку которая получилось(только для разработки) */
    12.       Echo "<br>"; /* переходим на другую строку */
    13.       echo file_get_contents("$domen");   /* отправляет get запрос и выводим полученные данные .[ВОТ ТУТ И НАЧИНАЮТСЯ ОШИБКИ КОГДА ДОМЕНОВ БОЛЬШЕ ЧЕМ 2] */
    14.       Echo "<br>________________<br>";
    15.    }
    16. }
    Вот в этих строчках.
    Почему то когда отправляешь запрос:
    file_get_contents("http://xml.linkpad.ru/?url=http://$list"))
    C помощью переменной то я получаю ошибку . а в ответе написано что запрашивался php.ru_ и внизу подчеркивание хотя в переменной нету такого знака в переменной строки php.ru а при запросе добавляется черта и запрос не верный
    когда делать запрос:
    file_get_contents("http://xml.linkpad.ru/?url=http://php.ru"))
    то все нормально работает , что делать? кто знает?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Попробуй заменить вот эти две строки:

    Код (PHP):
    1. $Parse_file = file_get_contents("$file_put");   /* загружаем файл в переменную */
    2.  
    3. $list_parse = (explode("\n", $Parse_file));    /* разделяем домены */
    на одну такую:

    Код (PHP):
    1. $list_parse = file($file_put, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
     
  3. freelancer.rnd

    freelancer.rnd Новичок

    С нами с:
    5 май 2014
    Сообщения:
    33
    Симпатии:
    0
    Warning: file() [function.file]: Filename cannot be empty in W:\home\portfol.ps\www\index.php on line 5

    Вот что говорит
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Значит в переменной, в которой должно быть название файла:

    Код (PHP):
    1. $file_put
    у тебя ничего нет.
     
  5. freelancer.rnd

    freelancer.rnd Новичок

    С нами с:
    5 май 2014
    Сообщения:
    33
    Симпатии:
    0
    Код (Text):
    1. $Parse_file = file_get_contents("$file_put");
    Она вот тут записывалась

    Добавлено спустя 1 минуту 44 секунды:
    Оооо Вроде помогло ,Спасибо большое!

    Добавлено спустя 1 минуту 4 секунды:
    Код (Text):
    1. $list_parse = file($file_put, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    А что эти строки делают ? можите пояснить что бы я знал на будущее?.
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО