PHP sapi_windows_generate_ctrl_event() 函数用于向同一进程组中的另一个进程发送 CTRL 事件。
语法
sapi_windows_generate_ctrl_event(event, pid)
参数
event | 必需。 指定要发送的 CTRL 事件 - PHP_WINDOWS_EVENT_CTRL_C 或 PHP_WINDOWS_EVENT_CTRL_BREAK。 |
pid | 可选。 指定要将事件发送到的进程的 ID。默认为 0,表示事件发送到进程组的所有进程。 |
返回值
成功时返回 true 或失败时返回 false。
示例:基本 sapi_windows_generate_ctrl_event() 用法
下面的示例显示如何将 CTRL+BREAK 事件传递给子进程。在这种情况下,子进程会回显"Hello World!"每秒,直到用户按下 CTRL+BREAK,这会导致仅终止子进程。
<?php
//将CTRL+BREAK事件转发给子进程
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
//创建一个每秒回显的子进程
$cmd = ['php', '-r', 'while (true) { echo "Hello World!\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]);
}
?>