码迷,mamicode.com
首页 > Web开发 > 详细

php多进程pcntl学习

时间:2016-07-07 19:47:26      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

  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");

 

  

  

php多进程pcntl学习

标签:

原文地址:http://www.cnblogs.com/loveyouyou616/p/5651067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!