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 :: Парсер цен большого сайта?

 PHP.SU

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


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

> Описание: как сделать беспрерывный цикл..
Koc
Отправлено: 06 Апреля, 2018 - 22:42:07
Post Id



Новичок


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


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




Доброго времени,

Нужно переодически парсить цены на сайте поставщика, написал простой код (добавил его ниже).

Запускаю на обычном хостинге, все работает нормально, НО есть небольшая проблема, если в файле больше 500 товаров, то скрипт уходит в 504 ошибку. Я так понимаю не хватает ресурсов хостинга (точнее времени выполнения скрипта), а там товаров более 5000. Приходится запускать по несколько раз скрипт руками, чтобы спарсить все.

Вопрос: Есть какие-то решения, чтобы запустить скрипт один раз и пусть он там потихоньку парсит все цены сразу?

Я уже думал на хостинге настроить cron, который будет каждые 10 сек в течении 5 минут запускать мои парсер, а в сам скрипт добавить сохранение позиции на которой остановились прошлый раз и при новом запуке начинать уже с нее. Но может есть какие-то другие решения?

Заранее спасибо за помощь!

PHP:
скопировать код в буфер обмена
  1.  
  2. $csv = fopen('price.csv', 'r'); // Файл в котором хранятся названия и артикул товаров
  3. while (($row = fgetcsv($csv, 1000, ';')) !== FALSE) {
  4.     $html = file_get_contents('http://site.ru/catalog/'.$row[1]);
  5.     preg_match('|<div class="price">(.*?)</div>|i', $html, $price);
  6.     if($price[1]){
  7.         // Тут код обработки новой цены
  8.     }
  9. }
  10. fclose($csv);
  11.  

(Отредактировано автором: 07 Апреля, 2018 - 02:53:53)

 
 Top
Строитель
Отправлено: 07 Апреля, 2018 - 22:35:19
Post Id



Участник


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


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




Koc пишет:
Есть какие-то решения, чтобы запустить скрипт один раз и пусть он там потихоньку парсит все цены сразу?
Можно к примеру передавать GET-параметры, и на их основе обрабатывать массив. Скопируйте и запустите код из примера ниже, и обратите внимание на адресную строку браузера после запуска скрипта:
Спойлер (Отобразить)
Вы можете передать на вход этого скрипта одномерный массив с любым количеством элементов - он будет выполняться до тех пор, пока не обойдёт весь массив. При этом скрипт не упрётся ни во время выполнения, ни в память.

(Отредактировано автором: 08 Апреля, 2018 - 00:07:38)

 
 Top
Koc
Отправлено: 09 Апреля, 2018 - 17:07:19
Post Id



Новичок


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


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




Строитель пишет:
Можно к примеру передавать GET-параметры, и на их основе обрабатывать массив. Скопируйте и запустите код из примера ниже, и обратите внимание на адресную строку браузера после запуска скрипта


Спасибо, хорошее решение, все работает.
 
 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