This function may produce a Warning:
sapi_windows_set_ctrl_handler(): CTRL events trapping is only supported on console in script.php..
It happens when script is started by "php-cgi.exe", so "php.exe -q" should be used instead.
While pressing CTRL+C don't expect the handler to run instantly, i've ran some curl request in a loop and found that handler runs when either response arrives or request finishes by timeout.sapi_windows_generate_ctrl_event
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
sapi_windows_generate_ctrl_event
Референца за `function.sapi-windows-generate-ctrl-event.php` со подобрена типографија и навигација.
sapi_windows_generate_ctrl_event
(PHP 7 >= 7.4.0, PHP 8)
sapi_windows_generate_ctrl_event — Испрати CTRL настан до друг процес
= NULL
Испраќа CTRL настан до друг процес во истата група на процеси.
Параметри
event-
На
CTRLнастан за испраќање; илиPHP_WINDOWS_EVENT_CTRL_CorPHP_WINDOWS_EVENT_CTRL_BREAK. pid-
ID на процесот до кој се испраќа настанот. Ако
0е дадено, настанот се испраќа до сите процеси од групата на процеси.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Примери
Пример #1 Основен sapi_windows_generate_ctrl_event() Употреба
Овој пример покажува како да се предаде CTRL+BREAK настани до дете процес. Во овој случај дете процесот ехо I'm still alive
секоја секунда, додека корисникот не притисне CTRL+BREAK, што предизвикува само дете процесот да биде прекинат.
<?php
// forward CTRL+BREAK events to the child process
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
// create a child process which echoes every second
$cmd = ['php', '-r', 'while (true) { echo "I\'m still alive\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 ракувач на настани