Search the Community
Showing results for tags 'kill'.
-
Здравствуйте уважаемые форумчане. Прошу подсказки у тех кто имеет опыт настройки 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 но точно я не уверен.