(PHP 7 >= 7.4.0, PHP 8)
sapi_windows_generate_ctrl_event — Envoie un événement CTRL à un autre processus
Envoie un événement CTRL à un autre processus dans le même groupe de processus.
event
L'événement CTRL
à envoyer;
soit PHP_WINDOWS_EVENT_CTRL_C
soit PHP_WINDOWS_EVENT_CTRL_BREAK
.
pid
L'identifiant du processus auquel envoyer l'événement. Si 0
est donné, l'événement est envoyé à tous les processus du groupe de processus.
Exemple #1 Utilisation basique de sapi_windows_generate_ctrl_event()
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]);
}
?>