Este ejemplo muestra cómo enviar un evento CTRL+BREAK
a un
proceso hijo. En este caso, el proceso hijo muestra I'm still alive
cada segundo, hasta que el usuario presiona CTRL+BREAK
, lo que provoca
la detención del proceso hijo.
<?php
// agregar el evento CTRL+BREAK al proceso hijo
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
// crear un proceso hijo que muestra un mensaje cada segundo
$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]);
}
?>