sapi_windows_generate_ctrl_event
(PHP 7 >= 7.4.0)
sapi_windows_generate_ctrl_event — Послать событие CTRL другому процессу
Описание
$event
, int $pid
= 0
) : boolПослать событие CTRL другому процессу в той же группе процессов.
Список параметров
-
event
-
Событие
CTRL
;PHP_WINDOWS_EVENT_CTRL_C
илиPHP_WINDOWS_EVENT_CTRL_BREAK
. -
pid
-
Идентификатор процесса, которому необходимо послать событие. Если задано как
0
, то событие будет послано всем процессам в группе.
Возвращаемые значения
Возвращает true
в случае успешного завершения или false
в случае возникновения ошибки.
Примеры
Пример #1 Использование sapi_windows_generate_ctrl_event()
В этом примере показано, как послать события
CTRL+BREAK
дочернему процессу.
В данном случае дочерний процесс будет печатать
Я всё ещё жив!
раз в секунду, пока пользователь
не нажмет CTRL+BREAK
. После этого дочерний
процесс завершится.
<?php
// Пересылка событий CTRL+BREAK дочернему процессу
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
// Создаем дочерний процесс
$cmd = ['php', '-r', 'while (true) { echo "Я всё ещё жив!\n"; sleep(1); }'];
$descspec = array(['pipe', 'r'], ['pipe', 'w'], ['pipe', 'w']);
$options = ['create_process_group' => true];
$proc = proc_open($cmd, $descspec, $pipes, null, null, $options);
while (true) {
echo fgets($pipes[1]);
}
?>
Смотрите также
- proc_open() - Выполнить команду и открыть указатель на файл для ввода/вывода
- sapi_windows_set_ctrl_handler() - Установить или удалить обработчик события CTRL