Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Медленная работа класса Simple_html_dom

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Очень долгая работа парсера контента на библеотеке simple_html_dom
Hazrat
Отправлено: 13 Июля, 2012 - 22:15:44
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Нужна помощь, есть прайс на стороннем ресурсе, я по id тырю с другого сайта информацию о товаре, в прайсе 24000 товаров, используя simple_html_dom еле как пытаюсь спарсить, но блин все очень очень медленно парсится примерно на все уходит где то 2 дня, это нереально долго вот прмер кода, обьясните в чем прчина? я думаю скорей всего в simple_html_dom может использовать phpQuery?
сам код
PHP:
скопировать код в буфер обмена
  1. $html = file_get_html("http://www.******.ru/*****/*****/*******/$art");  # парсим с сайта
  2.  
  3.    
  4.     /*---------- Переменные которые работают с SIMPLE HTML DOM -- они подготавливают документ для *******----------*/
  5.  
  6.     $table = $html->find( 'table.text tbody', 1); # таблица которую ьуду парсить
  7.    if (isset($table)) {
  8.         $tr = $table->find('tr');  # тег tr где находиться нужная информация
  9.    } else {
  10.         $tr = array();
  11.     }
  12.    
  13.    
  14.     # Так как парсинг фотографий долгий, отправляем запрос что бы база не закрыла сессию                    
  15.    $sql_time = 'SET SESSION wait_timeout = 360000000';
  16.     DB_MYSQl($sql_time);
  17.    
  18.      # ---- Обработка изображений ------ #              
  19.    $img_html_element = $html->find('td.cat-r1');
  20.     $img_inc = 0;
  21.     $names_img = '';
  22.     foreach ($img_html_element as $img) {
  23.         $img_href = $img->first_child()->href ;
  24.         $thumbs = $img->first_child()->first_child()->src;
  25.         $names_images = $art.'_img_'.$img_inc.'.jpg';
  26.         copy($thumbs , './parser/thum/'.$names_images);
  27.         copy($img_href , './parser/img/'.$names_images);
  28.         $img_inc++;
  29.         $names_img .= ' '.$names_images;
  30.     }
  31.     $names_img = trim($names_img);
  32.     $names_img = $names_img == '' ? 'none.png' : $names_img;

(Отредактировано автором: 13 Июля, 2012 - 22:18:47)



-----
Я мирный человек! Мне не нужна Война! Мне нужен МИР! желательно весь...
 
 Top
Stierus Супермодератор
Отправлено: 16 Июля, 2012 - 16:16:54
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




1. Посмотрите, куда уходит основное время - на скачку html, парсинг страниц, ресайз картинок или еще куда-то, когда поймете где тормозит - будет легче понять, как ускорить Улыбка.
2. Запускайте в несколько потоков. Любой свой мало-мальский парсер запускаю минимум в 5 - 10 потоков параллельно
3. Не очень понял про "Так как парсинг фотографий долгий, отправляем запрос что бы база не закрыла сессию " ... как связан парсинг картинок и работа с базой данных? о_О
4. Вообще парсеры принято делать на очередях: 1 скрипт скачивает страницы и добавляет в очередь задачу по ее обработке, 2 скрипт смотрит в очереди задачи по парсингу страниц, получая задание - парсит страницуи ставит задачу на ресайз картинок, 3 скрипт смотрит в очереди задачи по ресайзу картинок и выполняет требуемое.Все это покрывается логированием. Плюсы в гибкости настроек - можно добавить воркеров на любой участок, минусы - нужен опыт для того что бы все это дело стабильно работало и отрабатывало исключительные ситуации.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB