Intereting Posts
Как изменить атрибут Cross Origin с использованием loadFromJSON? Как сохранить файл в Moodle, чтобы он был доступен для внешнего приложения? Является ли mysqli :: multi_query более эффективным, чем несколько отдельных запросов? Symfony2 – Как поставить метку и ввести флажки / радиостанции в одной строке? Как читать ключевые слова Lightroom из файла изображения с помощью PHP? TripleDES Шифрование на C # и PHP не выходит одинаково (PKCS7, ECB)? Symfony2: языковой стандарт по умолчанию не применяется в переводе PHP получает следующее появление понедельника с определенной даты (со временем) Отображение вывода при циклизации в php Echo xml получается из службы wcf в php? Помощь с SP и UDF? usort (): Массив был изменен функцией сравнения пользователей Выполнение HTTP-запросов FROM Laravel во внешний API Как заказать результаты с помощью findBy () в Доктрине Как Zend Framework 2 делает частичные части внутри модуля?

Насколько это возможно, демон, написанный на PHP, с использованием ignore_user abort и set_time_limit (0)

Я обманываюсь с демонами и задаюсь вопросом, насколько это возможно (с точки зрения использования памяти и процессора, и надежности), чтобы это сделать с помощью PHP:

<?php // Ignore user aborts and allow the script // to run forever ignore_user_abort(true); set_time_limit(0); $fp = fopen('loop.log', 'w'); fwrite($fp, date('Ymd H:i:s') . ' Started' . PHP_EOL); while(1) { fwrite($fp, date('Ymd H:i:s') . ' Looped' . PHP_EOL); if (file_exists('loop.stop')) { break; } // Sleep for 100 seconds sleep(100); } fwrite($fp, date('Ymd H:i:s') . ' Stopped' . PHP_EOL); fclose($fp); 

Этот простой пример (адаптированный из руководства PHP для ignore_user_abort ) – это только контейнерный скрипт. Фактическая функциональность будет помещена внутри цикла while.

У меня этот скрипт работает на моем ноутбуке в течение 7 часов, и все выглядит отлично, но это мало что делает. Кто-нибудь еще это пробовал?

Solutions Collecting From Web of "Насколько это возможно, демон, написанный на PHP, с использованием ignore_user abort и set_time_limit (0)"

Я бы поставил цикл в BASH-скрипт, так что любые ресурсы PHP регулярно очищаются.

 #!/bin/bash clear date php -f doChecksAndAct.php sleep 100 # rerun myself exec $0 

Если вы выполняли какие-либо особенно тяжелые задания в скрипте PHP, вы также могли бы разместить небольшой (ish) цикл (например, 50-100 итераций, если они не останавливали несколько секунд между ними), чтобы уменьшить общее количество накладное время между прогонами.

Дополнение: я написал блог на стыке Bash / PHP (или другого языка), чтобы вы могли очень легко зацикливаться на PHP-скрипте, а затем выйти для немедленного перезапуска или приостановить какое-то время – Выполнение работы в другом месте – Боковая панель, запускающая рабочий .

Я рекомендую против этого.

4 года назад появилась ошибка, в которой говорится, что память, выделенная для объектов, созданных в методах объектов, не выпущена .

Разработчики считают этот запрос Feature, но при использовании длительных процессов его очень сложно обойти. Я попытался, но был очень рад, когда смог уволить заявление.

son server daemon, возможно, стоит проверить, а также

http://dev.pedemont.com/sonic