Jump to content

Recommended Posts

Posted (edited)

Здравствуйте уважаемые форумчане. Прошу подсказки у тех кто имеет опыт настройки php для парсеров, демонов либо других "долгоиграющих"  скриптов. Суть такая пишу скрипт загрузки товаров в интернет магазин из xml прайса. Столкнулся с той проблемой что на моем сервере парсер отрабатывает нормально, однако на хостинге клиента прекращает работу спустя 20-60  минут после запуска. В итоге я решил проверить как долго вообще будет выполнятся php скрипт на клиентском хостинге, для проверки написал что то вроде демона:

<?php
ini_set('max_execution_time', 0);
set_time_limit(0);
ini_set("memory_limit", "128M");
ignore_user_abort(true);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

function shutdown()
{
    file_put_contents(__DIR__ . '/log/shutdown_log.txt', 'Выполнили функцию shutdown!'.PHP_EOL, FILE_APPEND);
    $err_arr = error_get_last();
    $err = 'type - '.$err_arr['type'] . ' | message - '. $err_arr['message'] . ' | file - '.$err_arr['file']. ' | line - '.$err_arr['line'];
    file_put_contents(__DIR__ . '/log/shutdown_log.txt', $err, FILE_APPEND);
    
}

function sig_handler($signo)
{
    $info = "\n" . 'received signal ' . $signo . "\n";
    $info .= "\n" . 'Выполнили функцию sig_handler! ' . $signo . "\n";
    file_put_contents(__DIR__ . '/log/sig_handler_log.txt', $info.PHP_EOL, FILE_APPEND);
    $err_arr = error_get_last();
    $err = 'type - '.$err_arr['type'] . ' | message - '. $err_arr['message'] . ' | file - '.$err_arr['file']. ' | line - '.$err_arr['line'];
    file_put_contents(__DIR__ . '/log/sig_handler_log.txt', $err, FILE_APPEND);
    exit;
}

register_shutdown_function('shutdown');
declare(ticks = 1);
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");


$time = date('H-i-s');
file_put_contents(__DIR__ . '/log/time_test_ON.txt', $time);

while(true){
    $time = date('H-i-s');
    file_put_contents(__DIR__ . '/log/time_test_log.txt', $time);
    sleep(1);
}

После запуска демона через консоль, он прекращает работу примерно через 20 минут, при этом shutdown() и sig_handler() - никаких логов не создают. Хотя если убить скрипт через консоль командой kill pid то обе функции отрабатывают нормально, то есть логи создаются.

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

Вот phpinfo хостинга.

Сам хостинг расположен на twinservers.net панель управления Cpanel, судя по выделенной памяти похож на vps но точно я не уверен.

Edited by kairos

Share this post


Link to post
Share on other sites

Что показывает

uptime

 

Share this post


Link to post
Share on other sites
Posted (edited)

Думаю, данная особенность вызвана настройкой одного из лимитов FastCGI на веб-сервере LiteSpeed.
Попробуйте локально убрать данный лимит, добавив следующие строки в .htaccess:

 

RewriteEngine On
RewriteRule .* - [E=noconntimeout:1]

 

Либо для отдельных скриптов:

 

RewriteEngine On
RewriteRule (wp-cron|backupbuddy|importbuddy)\.php - [E=noconntimeout:1]

Edited by shelkunov

Share this post


Link to post
Share on other sites
1 hour ago, LTRay said:

Что показывает


uptime

 

[antrecom@uashared17 ~]$ uptime
 01:29:18 up 141 days, 17:47,  0 users,  load average: 4.78, 5.02, 5.62

Share this post


Link to post
Share on other sites
1 hour ago, shelkunov said:

Думаю, данная особенность вызвана настройкой одного из лимитов FastCGI на веб-сервере LiteSpeed.
Попробуйте локально убрать данный лимит, добавив следующие строки в .htaccess:

 

RewriteEngine On
RewriteRule .* - [E=noconntimeout:1]

 

Либо для отдельных скриптов:

 

RewriteEngine On
RewriteRule (wp-cron|backupbuddy|importbuddy)\.php - [E=noconntimeout:1]

Попробовал - результат тот же, скрипт падает ровно через 20 минут.

Share this post


Link to post
Share on other sites

kvm / openvz убивает его. Разговаривать тут надо с тех поддержкой

Share this post


Link to post
Share on other sites
Posted (edited)

-

Edited by shelkunov

Share this post


Link to post
Share on other sites
33 minutes ago, LTRay said:

kvm / openvz убивает его. Разговаривать тут надо с тех поддержкой

Спасибо. Написал заказчику, пусть долбит саппорт, будет весело если там еще и хостинг забугорный.)

Share this post


Link to post
Share on other sites
6 часов назад, kairos сказал:

Спасибо. Написал заказчику, пусть долбит саппорт, будет весело если там еще и хостинг забугорный.)

 

это hostiq

Share this post


Link to post
Share on other sites

Получил ответ от хостинга:
"Здравствуйте, на наших серверах виртуального хостинга есть ограничение в 1200 секунд на время работы пользовательского процесса. Запущенные Вами процессы были остановлены при превышении данного лимита:" - так что таки да на их стороне была проблема.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By igyan
      1 000.00 руб
      Скачать/Купить дополнение


      Парсер-менеджер товаров с торговых площадок
      Модуль Парсер-менеджер товаров с торговых площадок
      Предназначен для обновления и добавления товаров с торговых площадок Яндекс-маркет(категории электроника, бытовая техника, компьютеры и некоторые дугие), Hotline.ua, Onliner.by .
      Для работы парсера необходим ionCube и версия PHP не ниже 5.3
      Работает на версиях 1.3.1.3- 2.3
      Модуль имеет привязку к домену, для каждого домена приобретается отдельная лицензия.
      Для покупки лицензии обращаться в личку
      Демо:
      http://www.oc-parser.ru/opencart/oc1541/admin/index.php?route=module/parsermanager
      User: demo
      Password: demo
      Видео как работает парсер:
      http://www.oc-parser.ru/index.php?r=site/page&view=demomanager
      Возможности:
      Добавление, обновление товаров . Автоматический поиск товара на сайте-доноре по названию товара или модели. Сохранение постоянных ссылок на товары с сайта донора, для дальнейшего использования ссылки. Гибкое использование фильтров для поиска редактируемых товаров, по отсутствию характеристик, описания, цены, изображения или целой категории товаров. Возможность выбора данных для обновления, данные указываются для каждого источника, с одного можно парсить атрибуты с другого, цену, описание и тд. Возможность дополнять или заменять данные в товарах. Использование прокси-сервера или указание целого листа с прокси-серверами. С последующей проверкой доступности сайта –донора (Яндекс.Маркет ). После проверки прокси сортируются по времени доступа. Контроль при парсинге нескольких товаров, если произошло прерывание парсинга из-за обрыва, таймаута, их можно допарсить позже. Подробный лог парсинга. Внимание! Перед парсингом сделайте бэкап БД магазина.
      Необходима библиотека CURL в PHP.
       
      Установка:
      Копирование в корень магазина файлов из архива для 1 или 2 версии. После запуска модуля создастся две таблицы в БД, одна для хранения ссылок на товары, другая для хранения ссылок при парсинге нескольких товаров. Настройка парсера согласно скрина, пустых значений не должно быть. Обновить таблицы парсера. Для торг.маил.ру и яндекса обязательно подкинуть куки, после посещения донора.  
      Принцип работы модуля:
      После установки модуля необходимо сделать первоначальные настройки для парсера и для сайтов-доноров, указывается сайт источник.
      Обязательно нажать «Сохранить». После настроек модуль готов к работе. Будут показаны товары, указанные в фильтре, или все если фильтр не используется.
      Обновление товаров.
      Для поиска товара необходимо нажать «Поиск» и будет произведен поиск товара по названию или модели. В появившемся списке товаров выбирается нужный, после чего ссылка на товар постоянно запомнится в парсере. Если поиск не дал результатов, можно ввести прямую ссылку на товар, скопировав ее с сайта источника. Для этого нужно нажать «+». Также есть возможность поиска товара по произвольному запросу(не по названию товара или модели). Для это нужно нажать «Ввести запрос» и ввести в поле, что необходимо найти.
      После появления ссылки с строке товара, товар можно парсить, есть возможность указать новую цену для товара, предварительно убрав галочку «Заменять цену» в настройках .
      Также возможен парсинг нескольких товаров, для этого нужно выбрать товары и нажать «Парсить все». Будут спарсены товары у которых есть ссылки.
      ВАЖНО! Парсинг нескольких товаров может быстро привести к бану, в особенности Яндексом, поэтому используйте эту функцию, если имеете прокси-сервера.
      При использовании фильтров по пустым атрибутам, изображениям и тд., после парсинга данных значений они не будут отображаться в парсере.
      Добавление новых товаров.
      Товары будут добавляться с выбранного сайта-источника. Для поиска товара надо нажать «Найти товар», можно сразу ввести прямую ссылку, нажав «+». После появления ссылки, можно парсить товар, нажав «Добавить товар». Для новых товаров можно указать категорию для отображения.
      Модуль адаптирован под версию 2.3. Проверено на версии 2.0, 2.1, 2.2, 2.3.
      В связи с тем что, с парсером постоянно возникают проблемы по независящим от автора и кода причинам: смена верстки донарами, отсутствие изображений, характеристик на некоторых страницах и капча тд. Постоянных просьб настроить парсер и напарсить товаров.
      С января 2018 продление  лицензией на год будет 600 р.
      На второй и последующие скидка при покупке нового парсера
       
       
      Добавил igyan Добавлено 20.02.2014 Категория Парсеры Системные требования Ioncube PHP>5.3 Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Старая цена  
    • By MaxD
      Скачать/Купить дополнение


      LiveImport - импорт Excel и сайтов
      Новинка! Мое новое дополнение Тестовый сайт создаст копию вашего магазина для тестов в один клик.
       
      Модуль для импорта таблиц (XLS, XLSX, CSV) и сайтов

      поддерживает импорт действительно больших файлов можно дописывать логику импорта в виде небольшого PHP-скрипта предустановленные настройки для AliExpress и eBay для любых сайтов можно настраивать через Мастер, как в ParseMX Язык - английский. Есть версии для OpenCart 1.5+, OpenCart 2.0 и самостоятельная.
      Работает с PHP 5.3 ... 7.0
      Это бета, поэтому имейте в виду, что все синтаксисы и разметки могут измениться в будущем без предупреждения и соблюдения обратной совместимости.
       
      Как настраивать парсинг одиночных товаров с сайта - https://youtu.be/W_yPVZsj62E
       
      Для массового парсинга товаров с сайта необходимо приобрести лицензию.
       
      Также есть лицензия для массового импорта прайсов, c ней LiveImport сможет:
      хранить отдельно настройки для разных прайсов по кнопке удалять товары, импортированные из определенного прайса автоматически загружать прайсы с внешних серверов по расписанию, если надо - вытаскивать их из ZIP-архива удалять/отключать товары, которые были в прайсе, но пропали проверять, изменился ли файл с последнего обращения, чтобы не обрабатывать повторно старый материал  
      Установка для ocStore/OpenCart 2+
      Установка для ocStore/OpenCart 1.5+
      Установка самостоятельной версии
      Добавил MaxD Добавлено 22.02.2016 Категория Парсеры Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Да Старая цена 0  
    • By Rassol2
      1 600.00 руб
      Скачать/Купить дополнение


      SimplePars - Универсальный парсер для ИМ
      Модуль SimplePars предназначен для парсинга и наполнения интернет магазина. 
       
      Идея модуля заключается в том что бы вы могли заварить чашечку кофе и наблюдать как ваш магазин наполняется товарами.
      Ведь намного приятнее наблюдать за строкой загрузки товара, чем заполнять каждую позицию вручную

       
      Возможности модуля SimplePars
      Основные задачи которые решает модуль это парсинг данных с сайта и последующее заполнение интернет магазина.
      Вы можете как парсить напрямую в интернет магазин, так и парсить в CSV файл для дальнейшей обработки. 
      Так же реализовано обновления товаров при помощи парсинга сайтов доноров. 
       
      В двух словах не описать что умеет делать модуль, по этому обозначу только основные моменты.

      - Полноценный парсер позволяющий парсить товары со сторонних магазинов и загружать себе.
      - Встроенный гибкий сборщик ссылок , который поможет собрать ссылки на необходимые товары.
      - Возможен парсинг и загрузка всех элементов товара.
      Код товара [model] Артикул [sku] Название Цена Количество Производитель Описание Категории Изображения Атрибуты Опций Данные - товара. Более подробно можете увидеть на скриншотах модуля.
       
      - Кроме загрузки возможно настройка обновления существующих товаров, цен, остатков и многое другое.
      - Идентификация товара по артикулу, модели или имени товара.
      - Доступна установка наценок любой сложности.
      - Парсинг / Составление SEO шаблонов и заполнение Мета данных товара, категорий, производителей. Заполнение SEO_URL
      - Формировать прайс csv с данными что вы парсите. Так же прайсы можно составлять в готовом формате для загрузки через АОП или любого другого загрузчика прайс листов. 
      - Поиск замена, мощный инструмент позволяющий вам налету изменять информацию. То есть, при парсинге вы можете вырезать или заменять определенные слова или целые блоки текста. Удалять или заменять в тексте названия сайта донора на ваш. И многое другое.
      - Поиск замена полностью поддерживает регулярные выражения.
      - Модуль способен парсить в многопоточном режиме. Что делает парсинг максимально быстрым!
      - Поддерживается парсинг с авторизацией.
      - Поддержка работы с прокси.
      - Собственный прокси чекер, позволяющий отобрать прокси сервера котороые будут работать с конкретным донором.
      - Возможна индивидуальная настройка запросов, Указание Cookies, User-Agent, Отправка собственных заголовков Headers
      - Система логирования позволяющая контролировать процесс парсинга на любом этапе.
      - Система кеширования сайта донора для безопасного парсинга подробнее Описание системы кеширования
      - NEW Автоматический парсинг по расписанию, при помощи CRON
      - NEW Встроенный редактор товаров. Редактор товаров поможет сделать финальную правку товаров. Инструкция к редактору товаров
       
       
      Вы можете указать любое количество границ парсинга, на любые данные что есть в html коде сайта донора.
      SimplePars это универсальный инструмент который поможет вам наполнить ваш интернет магазин.
      Обратите внимание что вы можете настроить парсинг на любые данные, и необязательно они должны быть совместимы с opencart. Вы можете парсить статьи, отзывы, блоги.
       
      В данном модуле есть возможность парсить все данные в CSV файл
      Можно формировать прайс листы для загрузки их через популярные дополнения. 
      Такие как:
      Автоматическая обработка прайс листов. 
      CSV Price Pro import/export
       
      И это малая часть тех задач которые может выполнить данный модуль.
      SimplePars разрабатывается как универсальный парсер, у него нету четких задач, у него есть только набор инструментов.
      А что вы построите имея эти инструменты, уже зависит только от вас.
       
      Инструкция к модулю доступна по ссылке
      Инструкция к модулю SimplePars
       
       
      Демо сайт для ознакомления с интерфейсом и возможностями модуля
      Обратите внимание что на демо сайте парсинг недоступен.
      http://demo.simplepars.top/admin/
      Логин - demo
      Пароль - demo
       
      Лицензионное соглашение.
      Ознакомится
       
      Обзор возможностей модуля (Видео уже устарело. Модуль шагнул гораздо дальше )
       
      Инструкция по установке.
      Установка SimplePars
      1. Зайдите в директорию вашей версии модуля и скопируйте все в корень сайта с заменой.
      2. Введите в строке браузера ваш_сайт/inst.php и нажмите Enter.
      3. Далее перейдите в раздел Система->Пользователи->Группы пользователей->Администратор нажмите выделить все в двух разделах:
      Разрешить просмотр Разрешить редактировать Затем нажмите сохранить.
      4. Зайдите в "Модификаторы" или "Менеджер дополнений", и нажмите Обновить. 
      5. После этого удалите в корне сайта файл inst.php
      Все, модуль установлен.
      В разделе Каталог под пунктом Производители появится пункт SimplePars это вход в модуль. 
       
      Инструкция по обновлению
      1. Загрузить содержимое директории c названием вашей версии  в корень сайта.
      2. Выполнить ваш_сайт/inst.php
      3. Удалить с корня сайта файл inst.php
       
      После установки или обновления я вижу белый экран или ошибку 500
      Если видите белый экран, то вам необходимо перейти в архив с модулем в директорию Other versions of PHP и там будут лежать файлы под все версии php.
      Открываете папку с именем вашей версии php и загружаете содержимое в корень магазина.
      Добавил Rassol2 Добавлено 28.10.2018 Категория Парсеры Системные требования PHP >= 5.6 Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Да Старая цена 0  
    • By vasiliyk
      Добрый день. Необходимо оптимизировать сайт под управлением OC3. Не устраивает низкая скорость загрузки страниц и категорий. Важно провести оптимизацию не с помощью кэшировшиков, а исправив архитектурные и логические ошибки.
    • By kostapliev
      Вроде пишу style="display:none" в guest.twig. А форма все равно высвечивается.
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.