(PHP 7 >= 7.4.0, PHP 8)
sapi_windows_generate_ctrl_event — CTRLイベント を別プロセスに送信する
event
送信する CTRL
イベント: PHP_WINDOWS_EVENT_CTRL_C
または PHP_WINDOWS_EVENT_CTRL_BREAK
pid
イベントを送信するプロセスID。 0
に設定すると、プロセスグループに属する 全てのプロセスにイベントが送信されます。
例1 sapi_windows_generate_ctrl_event() 関数の基本的な使い方
以下の例は、 CTRL+BREAK
イベントを子プロセスに送信する方法を示しています。 この場合、ユーザーが CTRL+BREAK
を押すまで、 子プロセスは I'm still alive
を1秒ごとに表示します。 CTRL+BREAK
は、子プロセスのみを終了させます。
<?php
// CTRL+BREAK イベントを子プロセスに送信する
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
// 1秒ごとに echo する子プロセスを生成
$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]);
}
?>