У меня есть приложение командной строки PHP с специальным обработчиком выключения:
<?php
declare(ticks=1);
$shutdownHandler = function () {
echo 'Exiting';
exit();
};
pcntl_signal(SIGINT, $shutdownHandler);
while (true) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://blackhole.webpagetest.org');
curl_exec($ch);
curl_close($ch);
}
Если я убью скрипт с помощью Ctrl + C, пока выполняется запрос CURL, он не действует. Команда просто зависает. Если я удалю свой пользовательский обработчик выключения, Ctrl + C немедленно уничтожит запрос CURL.
Почему CURL unkillable, когда я определяю обработчик SIGINT
?