Intereting Posts
Вызов неопределенной функции dl () Исходные данные PHP EXIF Получить дату понедельника на текущей неделе в PHP 4 Как обрабатывать форму с помощью CodeIgniter самый быстрый способ выбрать N-й элемент хэша [PHP Предупреждение: mail (): «sendmail_from» не установлен в php.ini или пользовательский заголовок «From:» отсутствует OpenSSL HMAC-SHA1 дайджест не соответствует Crypto's Как преобразовать символы и символы в символы HTML? Взаимное исключение PHP в файле / MySQL, считывание и выполнение операторов из файла с использованием perl Скопировать изображение с удаленного сервера через HTTPS CONCAT ON Запрос в объединении более двух таблиц таблицы mysql Слияние существующего PDF с динамически созданным PDF с использованием TCPDF WordPress add_rewrite_tag (), add_rewrite_rule () и post_link () Потоковая / потоковая буферизация PHP больше не работает размещение в группе от имени пользователя с использованием API-интерфейса facebook

PHP register_shutdown_function для запуска, когда сценарий убит из командной строки?

Можно ли вызвать функцию, когда процесс cron убит из командной строки (через Ctrl + c) или с помощью команды kill?

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

Я пытаюсь записать результат в файл и обновить значение базы данных, когда экземпляр cron автоматически убит (т. Е. Работает слишком долго).

Согласно комментарию в руководстве по register_shutdown_function() , это можно сделать следующим образом:

При использовании CLI (и, возможно, командной строки без CLI – я его не тестировал) функция shutdown не вызывается, если процесс получает SIGINT или SIGTERM. только естественный выход PHP вызывает функцию выключения. Чтобы преодолеть проблему, скомпилируйте интерпретатор командной строки с помощью --enable-pcntl и добавьте этот код:

  <?php declare(ticks = 1); // enable signal handling function sigint() { exit; } pcntl_signal(SIGINT, 'sigint'); pcntl_signal(SIGTERM, 'sigint'); ?> 

Таким образом, когда процесс получает один из этих сигналов, он выходит из нормального состояния и вызывается функция выключения. … (аббревиатура, чтобы сэкономить место, прочитайте полный текст)

Если это слишком много хлопот, я бы подумал о том, чтобы сделать тайм-аут из PHP, установив для этого время. Достижение предела вызовет фатальную ошибку, и функция выключения будет вызвана нормально.