Este ejemplo forkea un proceso demonio, con un gestor de señales.
Ejemplo #1 Ejemplo de control de procesos
<?php
pcntl_async_signals(true);
$pid = pcntl_fork();
if ($pid == -1) {
die("imposible de forkear");
} else if ($pid) {
exit(); // somos el proceso padre
} else {
// somos el proceso hijo
}
// desvinculemos el proceso del terminal
if (posix_setsid() == -1) {
die("imposible de desvincularse del terminal");
}
// configuración de los gestores de señales
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
// bucle infinito
while (1) {
// ejecución de algo
}
function sig_handler($signo)
{
switch ($signo) {
case SIGTERM:
// gestión de las tareas de terminación
exit;
break;
case SIGHUP:
// gestión de las tareas de reinicio
break;
default:
// gestión de otras tareas
}
}
?>