За последние 24 часа нас посетили 17334 программиста и 1650 роботов. Сейчас ищут 957 программистов ...

Вопрос по file_get_contents. Проблема с парсингом.

Тема в разделе "Прочие вопросы по PHP", создана пользователем FeoSilverada, 6 окт 2014.

  1. FeoSilverada

    FeoSilverada Новичок

    С нами с:
    6 окт 2014
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте друзья! Пишу значит я некий парсер, в бд хранятся записи с урлами страниц (страниц порядка 950), откуда брать контент, но столкнулся со следующей проблемой. Описываю.
    Общий метод, вызывающий закрытые методы, с помощью которых происходит парсинг
    Код (Text):
    1.  
    2. public function parseProducts(){
    3.         $this->getExistProductPageArray()
    4.                 ->parseProductListPage($this->link_array_product_page);
    5.     }
    метод getExistProductPageArray
    Код (Text):
    1.  
    2. private function getExistProductPageArray() {
    3.         $link_array_product_page = DB::query("SELECT id, old_uri FROM categories WHERE existproduct = 1");
    4.         $this->link_array_product_page = $link_array_product_page;
    5.         print_r($this->link_array_product_page);
    6.         return $this;
    7.     }
    Тут просто извлекаем массив с урлами.
    Далее начинаем получать контент с этих урлов, тут собственно и кроется проблема
    Кусок кода метода (весь большой уж больно):
    Код (Text):
    1.  
    2. private function parseProductListPage($url_array) {
    3.         //if($url_array) {print_r($url_array); die("Хватит");}
    4.         $base_url = $this->base_url.'/shop/';
    5.        
    6.         if(count($url_array)) {
    7.             foreach($url_array as $key => $value) {
    8.                 $contentpage = file_get_contents($base_url . $value['old_uri']);
    9.                 ....
    10.             }
    11.         }
    12.     }
    После выполнения данного кода, происходит подвисание, и страница грузится бесконечно. Массив из бд приходит корректный, но вот особенность такая наблюдается. В методе getExistProductPageArray я делал print_r(); массива, так вот если пытаться забрать код со страницы, то массив выводит не полностью (скрин прикрепил)
    [​IMG], останавливается на 899 элементе и подвисает (бесконечно загружается, браузер не висит), но если убрать $contentpage = file_get_contents($base_url . $value['old_uri']); то массив отрисовывается нормально. Честно даже ума не приложу на что грешить тут можно. Прошу помощи. Спасибо за внимание.
     
  2. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Разберись как делать flush http://php.ru/manual/function.flush.html чтобы скрипт не ждал всех вычислений для отображения информации.
    Парси через curl и найди отладкой где подвисает.