(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.
signal
O 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.