array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.sapi-windows-set-ctrl-handler.php', 1 => 'sapi_windows_set_ctrl_handler', ), 'up' => array ( 0 => 'ref.misc.php', 1 => 'Разные функции', ), 'prev' => array ( 0 => 'function.sapi-windows-generate-ctrl-event.php', 1 => 'sapi_windows_generate_ctrl_event', ), 'next' => array ( 0 => 'function.sapi-windows-vt100-support.php', 1 => 'sapi_windows_vt100_support', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/misc/functions/sapi-windows-set-ctrl-handler.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 7 >= 7.4.0, PHP 8)
sapi_windows_set_ctrl_handler — Установить или удалить обработчик события CTRL
Устанавливает или удаляет обработчик события CTRL
,
который позволит процессам Windows CLI перехватывать или
игнорировать события CTRL+C
и
CTRL+BREAK
. Обратите внимание, что в
многопоточном окружение это возможно только при вызове
из главного потока.
handler
Функция обратного вызова, которая будет установлена или удалена.
Эта функция будет вызываться при наступлении событий
CTRL+C
и CTRL+BREAK
.
Функция должна иметь следующую сигнатуру:
event
CTRL
;
PHP_WINDOWS_EVENT_CTRL_C
или PHP_WINDOWS_EVENT_CTRL_BREAK
.
handler
в значение
null
приведёт к игнорированию событий
CTRL+C
, но не CTRL+BREAK
.
add
Если true
, то обработчик будет установлен. Если false
, то
удалён.
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Использование sapi_windows_set_ctrl_handler()
В этом примере показано, как перехватывать события CTRL
.
<?php
function ctrl_handler(int $event)
{
switch ($event) {
case PHP_WINDOWS_EVENT_CTRL_C:
echo "Вы нажали CTRL+C\n";
break;
case PHP_WINDOWS_EVENT_CTRL_BREAK:
echo "Вы нажали CTRL+BREAK\n";
break;
}
}
sapi_windows_set_ctrl_handler('ctrl_handler');
while (true); // Бесконечный цикл
?>