Cet exemple montre comment envoyer un événement CTRL+BREAK
à un
processus enfant. Dans ce cas, le processus enfant affiche I'm still alive
toutes les secondes, jusqu'à ce que l'utilisateur appuie sur CTRL+BREAK
, ce qui provoque
l'arrêt du seul processus enfant.
<?php
// ajouter l'événement CTRL+BREAK au processus enfant
sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');
// créer un processus enfant qui affiche un message toutes les secondes
$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]);
}
?>