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 :: Парсинг более 30 тысяч страниц.

 PHP.SU

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


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

> Без описания
DeMonyan
Отправлено: 07 Марта, 2015 - 18:11:49
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


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




Есть скрипт который формирует задание для парсинга. и записывает его в БД. После окончания своей работы он через сокеты запускает 4 экземпляра парсера, ПОСТом передав с какой записи в базе необходимо начать парсинг.

Парсер выбирает 30 записей в базе и их обрабатывает, по завершению опять же через сокет запускает себя снова увеличив параметр на 120.

Вот процедура для запуска скрипта и отправки ему ПОСТом данных:
CODE (htmlphp):
скопировать код в буфер обмена
  1. function exec_script($url, $params = array())
  2. {
  3.     $parts = parse_url($url);
  4.  
  5.     if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))
  6.     {
  7.         return false;
  8.     }
  9.  
  10.     $data = http_build_query($params, '', '&');
  11.  
  12.     fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
  13.     fwrite($fp, "Host: " . $parts['host'] . "\r\n");
  14.     fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
  15.     fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
  16.     fwrite($fp, "Connection: Close\r\n\r\n");
  17.     fwrite($fp, $data);
  18.     fclose($fp);
  19.  
  20.     return true;
  21. }
  22.  


Вот по такому условию происходит запуск после парсинга очередной порции:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $limit=$limit+30; //значение из массива пост увеличиваем на 30
  3. $query="Select * FROM parcers where script='trade' LIMIT $limit,30";
  4. $result=ExecuteQuery($query);
  5. if (mysql_num_rows($result)<=0) {
  6.         $qt="INSERT INTO parcers_logs SET script='parcer_trade', data='".$realm."_just_finish'";
  7.         ExecuteQuery($qt);
  8. }
  9. else {
  10.         $limit=$limit+90;
  11.         $query="Select * FROM parcers where script='trade' LIMIT $limit,30";
  12.         $result=ExecuteQuery($query);
  13.         if (mysql_num_rows($result)>0) {
  14.                 $url='http://'.$_SERVER['HTTP_HOST'].'/parcers/parcer_trade.php';
  15.                 $params['limit'] = $limit;
  16.                 exec_script($url, $params);
  17.         }
  18. }
  19.  


Запускаю скрипт формирующий ссылки, всё хорошо, он заканчивает нормально работу, и вроде даже запускает 4 экземпляра парсера. Но ни разу парсинг не дошёл до конца. Останавливается совершенно разных местах, причину понять не могу.

Собственно зачем таки грабли? На хостинге ограничение на выполнение скрипта минута. Изменить её в настройках нельзя, в скрипте задать нельзя. Потому приходится делить на части парсинг и запускать рекурсивно.

Подскажите, может есть вариант решения попроще, или в чём причина обрыва выполнения скрипта может быть?
 
 Top
zloy dyx
Отправлено: 07 Марта, 2015 - 21:08:13
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Авг. 2014  
Откуда: Германия


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

[+]


хост скрипт который сильно грузит систему отрубать может. неуже взять вдс и настроить самому так тяжело? (гугли вдс разминка, 60 рублей месяц 225 озу)
 
 Top
DeMonyan
Отправлено: 08 Марта, 2015 - 13:26:23
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2011  


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




Русские не ищут лёгких путей!
Решил проблему мониторингом выполнения предыдущего шага, и плевать я хотел что у хостера там ошибки сыпятся при этом и что-то нагружается. Главное моя задача выполняется правильно, пусть и немного дольше.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB