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

 

[[email protected] ~]$ 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 Rassol2
      1 600.00 руб
      Скачать/Купить дополнение


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

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

      - Полноценный парсер позволяющий парсить товары со сторонних магазинов и загружать себе.
      - Встроенный гибкий сборщик ссылок , который поможет собрать ссылки на необходимые товары.
      - Возможен парсинг и загрузка всех элементов товара.
      Код товара [model] Артикул [sku] Название Цена Количество Производитель Описание Категории Изображения Атрибуты Опций Данные - товара. Более подробно можете увидеть на скриншотах модуля.
       
      - Кроме загрузки возможно настройка обновления существующих товаров, цен, остатков и многое другое.
      - Идентификация товара по артикулу, модели или имени товара.
      - Доступна установка наценок любой сложности.
      - Парсинг / Составление SEO шаблонов и заполнение Мета данных товара, категорий, производителей. Заполнение SEO_URL
      - Формировать прайс csv с данными что вы парсите. Так же прайсы можно составлять в готовом формате для загрузки через АОП или любого другого загрузчика прайс листов. 
      - Поиск замена, мощный инструмент позволяющий вам налету изменять информацию. То есть, при парсинге вы можете вырезать или заменять определенные слова или целые блоки текста. Удалять или заменять в тексте названия сайта донора на ваш. И многое другое.
      - Поиск замена полностью поддерживает регулярные выражения.
      - Модуль способен парсить в многопоточном режиме. Что делает парсинг максимально быстрым!
      - Поддерживается парсинг с авторизацией.
      - Поддержка работы с прокси.
      - Собственный прокси чекер, позволяющий отобрать прокси сервера котороые будут работать с конкретным донором.
      - Возможна индивидуальная настройка запросов, Указание Cookies, User-Agent, Отправка собственных заголовков Headers
      - Система логирования позволяющая контролировать процесс парсинга на любом этапе.
      - Система кэширования сайта донора для безопасного парсинга подробнее Описание системы кеширования
      - NEW Автоматический парсинг по расписанию, при помощи CRON
      - NEW Встроенный редактор товаров. Редактор товаров поможет сделать финальную правку товаров. Инструкция к редактору товаров
      - NEW Встроенный редактор ссылок, позволяющий группировать ссылки по спискам, и производить загрузку определенных групп ссылок. Так же отслуживать ссылки которые парсятся с ошибками.
      - NEW Парсер XML/YML документов от поставщика. .
       
      Вы можете указать любое количество границ парсинга, на любые данные что есть в html коде сайта донора.
      SimplePars это универсальный инструмент который поможет вам наполнить ваш интернет магазин.
      Обратите внимание что вы можете настроить парсинг на любые данные, и необязательно они должны быть совместимы с opencart. Вы можете парсить статьи, отзывы, блоги.
       
      В данном модуле есть возможность парсить все данные в CSV файл
      Можно формировать прайс листы для загрузки их через популярные загрузчики прайс листов.
       
      И это малая часть тех задач которые может выполнить данный модуль.
      SimplePars разрабатывается как универсальный парсер, у него нету четких задач, у него есть только набор инструментов.
      А что вы построите имея эти инструменты, уже зависит только от вас.
       
      Инструкция к модулю доступна по ссылке
      Инструкция к модулю 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 Rassol2
      Модуль SimplePars предназначен для парсинга и наполнения интернет магазина. 
       
      Идея модуля заключается в том что бы вы могли заварить чашечку кофе и наблюдать как ваш магазин наполняется товарами.
      Ведь намного приятнее наблюдать за строкой загрузки товара, чем заполнять каждую позицию вручную

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

      - Полноценный парсер позволяющий парсить товары со сторонних магазинов и загружать себе.
      - Встроенный гибкий сборщик ссылок , который поможет собрать ссылки на необходимые товары.
      - Возможен парсинг и загрузка всех элементов товара.
      Код товара [model] Артикул [sku] Название Цена Количество Производитель Описание Категории Изображения Атрибуты Опций Данные - товара. Более подробно можете увидеть на скриншотах модуля.
       
      - Кроме загрузки возможно настройка обновления существующих товаров, цен, остатков и многое другое.
      - Идентификация товара по артикулу, модели или имени товара.
      - Доступна установка наценок любой сложности.
      - Парсинг / Составление SEO шаблонов и заполнение Мета данных товара, категорий, производителей. Заполнение SEO_URL
      - Формировать прайс csv с данными что вы парсите. Так же прайсы можно составлять в готовом формате для загрузки через АОП или любого другого загрузчика прайс листов. 
      - Поиск замена, мощный инструмент позволяющий вам налету изменять информацию. То есть, при парсинге вы можете вырезать или заменять определенные слова или целые блоки текста. Удалять или заменять в тексте названия сайта донора на ваш. И многое другое.
      - Поиск замена полностью поддерживает регулярные выражения.
      - Модуль способен парсить в многопоточном режиме. Что делает парсинг максимально быстрым!
      - Поддерживается парсинг с авторизацией.
      - Поддержка работы с прокси.
      - Собственный прокси чекер, позволяющий отобрать прокси сервера котороые будут работать с конкретным донором.
      - Возможна индивидуальная настройка запросов, Указание Cookies, User-Agent, Отправка собственных заголовков Headers
      - Система логирования позволяющая контролировать процесс парсинга на любом этапе.
      - Система кэширования сайта донора для безопасного парсинга подробнее Описание системы кеширования
      - NEW Автоматический парсинг по расписанию, при помощи CRON
      - NEW Встроенный редактор товаров. Редактор товаров поможет сделать финальную правку товаров. Инструкция к редактору товаров
      - NEW Встроенный редактор ссылок, позволяющий группировать ссылки по спискам, и производить загрузку определенных групп ссылок. Так же отслуживать ссылки которые парсятся с ошибками.
      - NEW Парсер XML/YML документов от поставщика. .
       
      Вы можете указать любое количество границ парсинга, на любые данные что есть в html коде сайта донора.
      SimplePars это универсальный инструмент который поможет вам наполнить ваш интернет магазин.
      Обратите внимание что вы можете настроить парсинг на любые данные, и необязательно они должны быть совместимы с opencart. Вы можете парсить статьи, отзывы, блоги.
       
      В данном модуле есть возможность парсить все данные в CSV файл
      Можно формировать прайс листы для загрузки их через популярные загрузчики прайс листов.
       
      И это малая часть тех задач которые может выполнить данный модуль.
      SimplePars разрабатывается как универсальный парсер, у него нету четких задач, у него есть только набор инструментов.
      А что вы построите имея эти инструменты, уже зависит только от вас.
       
      Инструкция к модулю доступна по ссылке
      Инструкция к модулю 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 и загружаете содержимое в корень магазина.
    • By buslikdrev
      Название модуля: Свободное php редактирование - "Free php editing"
      Версия модуля: 1.0
      Тип лицензии: Full (полная версия)
      Тип установки: ocmod
      Язык: Беларуская мова, English, Русский язык, Українська мова
      Дата создания: 24.11.2019
      Был протестирован на: OpenCart.pro 2.1.0.2.2 и 2.3.0.2.6, OpenCart-"Русская сборка" 2.1.0.2 (rs1), 2.3.0.2 (rs6) и 3.0.2.0 (rs3), ocStore 2.1.0.2.1 и 2.3.0.2.3 - шаблон (default)
      Название архива: Free php editing v1.0 Full OpenCart 2.X-3.1.X.zip
       
       
      ДЕМОНСТРАЦИЯ


      ОПИСАНИЕ
      Модуль предназначен для возможности свободно редактировать php, tpl, twig, файлы и не париться при обновлении версий или шаблонов OpenCart. Просто создаёте копию файла с префиксом перед именем и редактируете его, потом обновляете модификаторы и ваши правки применены (модули также будут вносить правки в ваш файл).

      ВНИМАНИЕ!
      Оригинальные файлы магазина не заменяет!
      Всегда проверяйте такие модули (окмоды - архивы) содержащие такие файлы: "install.php, install.sql" так как злоумышленники могут навредить вашему сайту, например, вашими руками удалят вашу базу данных.
      Пример запроса (смотрите, чтобы не было удаления таблиц "DROP TABLE": категорий, пользователей, товара и т.д. по оригиналу или всей БД "DROP DATABASE"):
       


      Модификатор "вносит изменения" в следующие файлы:

      УСЛОВИЯ СОГЛАШЕНИЯ
      - Beta версии устанавливаете на свой страх и риск - бэкап базы данных (далее - БД) обязателен;
      - Модуль (модификатор, дополнение, расширение, приложение) (далее - Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка - один домен);
      - Редактировать код можно только под нужды своего магазина;
      - Распространение модуля запрещено;
      - Техническая поддержка (далее - ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
      - Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули - платная;
      - Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
      - Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
      - Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля;
      - ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.
      - После 5 покупок безлимит на установку доменов (в коммерческих целях тоже, тех. поддержку осуществляете вы) и можно заменить ссылку на свою страницу для тех. поддержки;
    • By buslikdrev
      650.00 руб · Срок продления: 200.00 руб за год
      Скачать/Купить дополнение


      Свободное php редактирование / Free php editing
      Название модуля: Свободное php редактирование - "Free php editing"
      Версия модуля: 1.0
      Тип лицензии: Full (полная версия)
      Тип установки: ocmod
      Язык: Беларуская мова, English, Русский язык, Українська мова
      Дата создания: 24.11.2019
      Был протестирован на: OpenCart.pro 2.1.0.2.2 и 2.3.0.2.6, OpenCart-"Русская сборка" 2.1.0.2 (rs1), 2.3.0.2 (rs6) и 3.0.2.0 (rs3), ocStore 2.1.0.2.1 и 2.3.0.2.3 - шаблон (default)
      Название архива: Free php editing v1.0 Full OpenCart 2.X-3.1.X.zip
       
       
      ДЕМОНСТРАЦИЯ


      ОПИСАНИЕ
      Модуль предназначен для возможности свободно редактировать php, tpl, twig, файлы и не париться при обновлении версий или шаблонов OpenCart. Просто создаёте копию файла с префиксом перед именем и редактируете его, потом обновляете модификаторы и ваши правки применены (модули также будут вносить правки в ваш файл).

      ВНИМАНИЕ!
      Оригинальные файлы магазина не заменяет!
      Всегда проверяйте такие модули (окмоды - архивы) содержащие такие файлы: "install.php, install.sql" так как злоумышленники могут навредить вашему сайту, например, вашими руками удалят вашу базу данных.
      Пример запроса (смотрите, чтобы не было удаления таблиц "DROP TABLE": категорий, пользователей, товара и т.д. по оригиналу или всей БД "DROP DATABASE"):
       


      Модификатор "вносит изменения" в следующие файлы:

      УСЛОВИЯ СОГЛАШЕНИЯ
      - Beta версии устанавливаете на свой страх и риск - бэкап базы данных (далее - БД) обязателен;
      - Модуль (модификатор, дополнение, расширение, приложение) (далее - Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка - один домен);
      - Редактировать код можно только под нужды своего магазина;
      - Распространение модуля запрещено;
      - Техническая поддержка (далее - ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
      - Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули - платная;
      - Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
      - Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
      - Автор не несёт ответственности за потерю или находку дохода пользователя из-за работы модуля;
      - ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.
      - После 5 покупок безлимит на установку доменов (в коммерческих целях тоже, тех. поддержку осуществляете вы) и можно заменить ссылку на свою страницу для тех. поддержки;
      Добавил buslikdrev Добавлено 21.04.2020 Категория Инструменты, утилиты Системные требования Метод активации Автоматическая активация 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 Wyachik2
      Как изменить название способа оплаты? Смотрел и в языках, там нашел меняю, но ничего не изменяется (кеш обновлял). Искал и view, там ничего не нашел, может кто сталкивался с подобным?
  • 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.