Можно ли разорвать петлю при прерывании сигналом? Когда я запускаю следующий код, если я посылаю SIGINT во время первой итерации цикла, вызывается обработчик сигнала, но затем я возвращаюсь обратно в цикл. Я хотел бы обработать сигнал, а затем пропустить остальную часть цикла (без выхода из скрипта).
<?php
declare(ticks = 1);
function sig_handler($signo) {
switch($signo) {
case SIGINT:
echo 'SIGINT' . PHP_EOL;
break;
default:
}
}
pcntl_signal(SIGINT, 'sig_handler');
$vars = array('foo', 'bar', 'baz');
foreach ($vars as $var) {
echo $var . PHP_EOL;
sleep(3);
}
// Do other stuff
?>
Вывод (ctrl+C во время каждого сна):
$ php foreach_test.php
foo
SIGINT
bar
SIGINT
baz
SIGINT