(PHP 8 >= 8.1.0)
pcntl_rfork — Manipula los recursos del proceso
flags
El parámetro flags
determina qué recursos del proceso llamante (padre)
son compartidos por el nuevo proceso (hijo) o inicializados a sus valores por omisión.
flags
es el OU lógico de un subconjunto de los siguientes valores:
RFPROC
: Si está definido, se crea un nuevo proceso;
de lo contrario, los cambios afectan al proceso actual.
RFNOWAIT
: Si está definido, el proceso hijo será disociado del padre.
Al salir, el proceso hijo no dejará un estado a recolectar para el padre.
RFFDG
: Si está definido, la tabla de descriptores de ficheros del llamante es copiada;
de lo contrario, ambos procesos comparten una sola tabla.
RFCFDG
: Si está definido, el nuevo proceso comienza con una tabla de descriptores de ficheros propia.
Es mutuamente excluyente con RFFDG
.
RFLINUXTHPN
: Si está definido, el núcleo devolverá SIGUSR1 en lugar de SIGCHILD al salir del hilo para el hijo.
Esto está destinado a hacer la notificación de salida del padre de salida del hilo Linux clone.
signal
El número del signal.
En caso de éxito, el PID del proceso hijo es devuelto en el contexto del padre,
y un 0
es devuelto en el contexto del proceso hijo.
En caso de fallo, un -1
será devuelto en el contexto del padre,
ningún proceso hijo será creado, y se lanzará un error PHP.
Ejemplo #1 Ejemplo de pcntl_rfork()
<?php
$pid = pcntl_rfork(RFNOWAIT|RFTSIGZMB, SIGUSR1);
if ($pid > 0) {
// Esto es el proceso padre.
var_dump($pid);
} else {
// Esto es el proceso hijo.
var_dump($pid);
sleep(2); // mientras el hijo no duerma, vemos su "pid"
}
?>
El resultado del ejemplo sería algo similar a:
int(77093) int(0)
Nota:
Esta función solo está disponible en sistemas BSD.