PHP 杂项函数

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]);
}
?>