Généralement, les programmes serveur s'exécutent en arrière-plan du système, ce qui est très différent des programmes de ligne de commande interactifs ordinaires. Il existe un démon de fonction dans la glibc. L'appel de cette fonction peut amener le processus actuel à quitter le terminal et à devenir un processus démon. Pour plus de détails, voir man daemon. Il n'existe actuellement aucune fonction de ce type en PHP. Bien sûr, si vous êtes intéressé, vous pouvez écrire une fonction d'extension PHP pour l'implémenter.
Il existe deux façons d'implémenter la démonisation des programmes en ligne de commande PHP :
nohup php myprog.php > log.txt &
La démonisation est implémentée ici.
Exécutez php myprog.php seul. Lorsque vous appuyez sur ctrl+c, l'exécution du programme sera interrompue et le processus en cours et les processus enfants seront tués.
php myprog.php &, bien que le programme d'exécution s'exécute également en arrière-plan, cela dépend en réalité du terminal. Lorsque l'utilisateur quitte le terminal, le processus sera arrêté.
function daemonize() {$pid = pcntl_fork();if ($pid == -1) {die("fork(1) failed!\n"); }elseif ($pid > 0) {//让由用户启动的进程退出exit(0); }//建立一个有别于终端的新session以脱离终端posix_setsid();$pid = pcntl_fork();if ($pid == -1) {die("fork(2) failed!\n"); }elseif ($pid > 0) {//父进程退出, 剩下子进程成为最终的独立进程exit(0); } }daemonize();sleep(1000);
Utilisez le code ci-dessus pour implémenter la démonisation Lorsque votre programme PHP doit s'exécuter en arrière-plan, vous n'avez besoin de l'appeler qu'une seule fois pour l'encapsuler. la fonction daemonize() peut être utilisée.
Remarque : il n'y a pas de redirection des entrées et sorties standard ici.
Recommandations associées :
Démonisation des programmes PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!