<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) { //创建子进程 $pid = pcntl_fork(); if ($pid < 0) { exit('创建子进程失败退出'); } elseif ($pid) { exit('主进程退出'); } else { //设置子进程为会话leader $sid = posix_setsid(); if ($sid < 0) { exit('设置子进程为leader失败'); } $callback(); } } //执行任务来测试 $callback = function () { for ($i=0;$i<10000;$i++) { file_put_contents('1.txt',$i.PHP_EOL,FILE_APPEND); } }; daemonize($callback);
先让主进程退出,然后设置子进程为会话组长即可