Подтвердить что ты не робот

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

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

Я пробовал register_shutdown_function(), но, похоже, он не вызывается, когда script убит, но вызывается при завершении script.

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

4b9b3361

Ответ 1

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

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

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

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

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