Apache 2.4 имеет команду грациозная остановка . Команда не уничтожает процессы напрямую, она отправляет сигтеру процессам, ожидает X секунд (в зависимости от GracefulShutdownTimeout ) и, если процесс все еще существует, вызывает принудительное уничтожение.
Я пытаюсь обнаружить это из PHP, чтобы остановить длинные задачи, но я не знаю, как это сделать. Похоже, connection_status () не работает для этой цели. И pcntl_signal () работает только с ... процессами, созданными из PHP?
<?php
$file = '/path/to/logs/test.log';
$secondsToSleep = 90;
@unlink($file);
for ($i=0; $i<$secondsToSleep; $i++) {
if (connection_status()) {
file_put_contents($file, 'Closed with status '.connection_status());
exit;
}
sleep(1);
}
file_put_contents($file, 'DONE');
Знаете ли вы, как обнаружить изящную сигтерму?