La fonction pcntl_fork() crée un processus enfant pour le processus en cours. Et exécutez d'abord le processus parent et renvoyez le PID du processus enfant, qui doit être supérieur à zéro. Dans le code du processus parent, vous pouvez utiliser pcntl_fork ($status) pour suspendre le processus parent jusqu'à ce que son processus enfant ait une valeur de retour. Remarque : le blocage du processus parent bloquera également le processus enfant. Cependant, la fin du processus parent n’affecte pas le fonctionnement du processus enfant.
Une fois l'exécution du processus parent terminée, il exécutera ensuite le processus enfant. À ce moment, le processus enfant commencera à s'exécuter à partir de l'instruction qui exécute pcntl_fork() (y compris cette fonction), mais à ce moment, il renvoie zéro. (ce qui signifie qu'il s'agit d'un processus enfant). Il est préférable d'avoir une instruction de sortie dans le bloc de code du processus enfant, c'est-à-dire qu'elle se terminera immédiatement après l'exécution du processus enfant. Sinon, il recommencera à exécuter certaines parties du script (sans jamais comprendre les règles).
En bref, faites attention à deux points :
1. Il est préférable que le processus enfant ait une instruction exit; pour éviter les erreurs inutiles
$pid = pcntl_fork(); //这里最好不要有其他的语句 if ($pid == -1) { die('could not fork'); } else if ($pid) { // we are the parent pcntl_wait($status); //Protect against Zombie children } else { // we are the child }
Pour plus d'articles liés à l'utilisation de php pcntl_fork et pcntl_fork, veuillez faire attention au site Web PHP chinois !