pcntl_waitpid în PHP

Multiprocesare și Sistem (PCNTL) PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8

Ghid complet pentru pcntl_waitpid în PHP: sincronizarea procesului părinte cu procesele copil, curățarea proceselor zombi și citirea codului de ieșire.

Sintaxă
pcntl_waitpid(int $pid, &$status, int $flags = 0, &$resource_usage = []): int

Ce face pcntl_waitpid

Funcția suspendă temporar execuția procesului părinte până când procesul copil cu PID-ul specificat își încheie activitatea (sau verifică non-blocant starea acestuia prin flag-ul WNOHANG). Este obligatorie pentru a preveni acumularea de procese Zombi (procese terminate ale căror metadate rămân captive în tabela nucleului).

Exemplu practic: Așteptarea finalizării și verificarea stării
<?php
$status = 0;
// Așteptăm terminarea procesului copil $pid:
pcntl_waitpid($pid, $status);

if (pcntl_wifexited($status)) {
    $codIesire = pcntl_wexitstatus($status);
    echo "Procesul copil s-a încheiat normal cu codul de ieșire: " . $codIesire . "\n";
} elseif (pcntl_wifsignaled($status)) {
    echo "Procesul copil a fost oprit forțat de semnalul: " . pcntl_wtermsig($status) . "\n";
}