pcntl在windows下无法使用,linux编译php时加上参数--enable-pcntl 即可。第一次使用pcntl模块,遇到了一些坑也慢慢填上了,这里简单记录下。
1. 子进程之间变量无法共享。
2. 子进程完成,记得加上exit(),子进程退出,否则会有坑。
1 <?php 2 $pid_dir = __DIR__.'/pid_files/'; 3 4 5 for ($i=0;$i<3;$i++){ 6 $pid = pcntl_fork(); 7 if ($pid == -1){ 8 var_dump('fork failed'); 9 } 10 11 if ($pid == 0){ 12 //子进程代码 ,返回当前进程id 13 $pid = posix_getgid(); 14 //返回当前父进程标识 15 $ppid = posix_getppid(); 16 $r = rand(0,100); //随机数 17 //创建一个文件 18 //file_put_contents($pid_dir."fork_child_process_{$i}_{$ppid}_{$pid}_{$r}",$e); 19 touch($pid_dir."fork_child_process_{$i}_{$ppid}_{$pid}_{$r}"); 20 //注意这里子进程完成,记得加上exit(),子进程退出,否则会有坑 22 exit(); 23 } 24 } 25 26 27 $pid = posix_getpid(); 28 $ppid = posix_getppid(); 29 $r = rand(0,100); //随机数 30 touch("$pid_dir/fork_process_pid_{$ppid}_{$pid}_$r"); 31 32 33 sleep(1000); // ps aux | grep php
参考: https://segmentfault.com/a/1190000003503671
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步