php多进程pcntl学习(一)

  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

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值