标签:
pcntl在windows下无法使用,linux编译php时加上参数--enable-pcntl 即可。第一次使用pcntl模块,遇到了一些坑也慢慢填上了,这里简单记录下。
1. 子进程之间变量无法共享。
2. 子进程完成,记得加上exit(),子进程退出,否则会有坑。
1 <?php 2 $pid_dir = __DIR__.‘/pid_files/‘; 3 4 for ($i=0;$i<3;$i++){ 5 $pid = pcntl_fork(); 6 if ($pid == -1){ 7 var_dump(‘fork failed‘); 8 } 9 10 if ($pid == 0){ 11 //子进程代码 ,返回当前进程id 12 $pid = posix_getgid(); 13 //返回当前父进程标识 14 $ppid = posix_getppid(); 15 $r = rand(0,100); //随机数 16 //创建一个文件 17 file_put_contents($pid_dir."fork_child_process_{$i}_{$ppid}_{$pid}_{$r}",$e); 18 //注意这里子进程完成,记得加上exit(),子进程退出,否则会有坑 19 //参考:https://segmentfault.com/a/1190000003503671 20 exit(); 21 } 22 } 23 24 25 $pid = posix_getpid(); 26 $ppid = posix_getppid(); 27 $r = rand(0,100); //随机数 28 touch("$pid_dir/fork_process_pid_{$ppid}_{$pid}_$r");
标签:
原文地址:http://www.cnblogs.com/loveyouyou616/p/5651067.html