Насколько это возможно, демон, написанный на 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('Y-m-d H:i:s') . ' Started' . PHP_EOL);
while(1) {
    fwrite($fp, date('Y-m-d H:i:s') . ' Looped' . PHP_EOL);
    if (file_exists('loop.stop')) {
        break;
    }
    // Sleep for 100 seconds
    sleep(100);
}
fwrite($fp, date('Y-m-d H:i:s') . ' Stopped' . PHP_EOL);
fclose($fp);

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

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

php,daemon,

2

Ответов: 3


3 принят

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

#!/bin/bash
clear
date

php -f doChecksAndAct.php
sleep 100
# rerun myself
exec $0

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

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


1

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

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

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


0

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

http://dev.pedemont.com/sonic

PHP, демон,
Похожие вопросы
Яндекс.Метрика