(PHP 8 >= 8.1.0)
pcntl_rfork — Manipula recursos do processo
flags
O parâmetro flags determina quais recursos do processo de chamada (pai)
são compartilhados pelo novo processo (filho) ou inicializados com seus valores padrão.
flags é o OR lógico de algum subconjunto de:
RFPROC: Se definido, um novo processo é criado;
caso contrário, as alterações afetam o processo atual.
RFNOWAIT: Se definido, o processo filho será dissociado do processo pai.
Ao sair, o processo filho não deixará um status para o processo pai coletar.
RFFDG: Se definido, a tabela de descritores de arquivo do invocador é copiada;
caso contrário, os dois processos compartilham uma única tabela.
RFCFDG: Se definido, o novo processo inicia com uma tabela de descritores de arquivo limpa.
É mutuamente exclusiva com RFFDG.
RFLINUXTHPN: Se definido, o kernel retornará SIGUSR1 em vez de SIGCHILD ao sair da thread filha.
Isso serve para fazer notificação ao processo pai da saída do clone no Linux.
signalO número do sinal.
Em caso de sucesso, o PID do processo filho é retornado na
thread de execução do processo pai, e um 0 é retornado na thread
de execução do processo filho.
Em caso de falha, -1 será retornado no
contexto do processo pai, nenhum processo filho será criado e um erro de PHP será gerado.
Exemplo #1 Exemplo de pcntl_rfork()
<?php
$pid = pcntl_rfork(RFNOWAIT|RFTSIGZMB, SIGUSR1);
if ($pid > 0) {
// Este é o processo pai.
var_dump($pid);
} else {
// Este é o processo filho.
var_dump($pid);
sleep(2); // como o filho não espera, então vemos seu "pid"
}
?>O exemplo acima produzirá algo semelhante a:
int(77093) int(0)
Nota:
Esta função só está disponível em sistemas BSD.