php多进程pcntl学习(一)
2016-07-07 17:56
591 查看
pcntl在windows下无法使用,linux编译php时加上参数--enable-pcntl 即可。第一次使用pcntl模块,遇到了一些坑也慢慢填上了,这里简单记录下。
1. 子进程之间变量无法共享。
2. 子进程完成,记得加上exit(),子进程退出,否则会有坑。
参考: https://segmentfault.com/a/1190000003503671
1. 子进程之间变量无法共享。
2. 子进程完成,记得加上exit(),子进程退出,否则会有坑。
<?php $pid_dir = __DIR__.'/pid_files/'; for ($i=0;$i<3;$i++){ $pid = pcntl_fork(); if ($pid == -1){ var_dump('fork failed'); } if ($pid == 0){ //子进程代码 ,返回当前进程id $pid = posix_getgid(); //返回当前父进程标识 $ppid = posix_getppid(); $r = rand(0,100); //随机数 //创建一个文件 //file_put_contents($pid_dir."fork_child_process_{$i}_{$ppid}_{$pid}_{$r}",$e); touch($pid_dir."fork_child_process_{$i}_{$ppid}_{$pid}_{$r}"); //注意这里子进程完成,记得加上exit(),子进程退出,否则会有坑 exit(); } } $pid = posix_getpid(); $ppid = posix_getppid(); $r = rand(0,100); //随机数 touch("$pid_dir/fork_process_pid_{$ppid}_{$pid}_$r"); sleep(1000); // ps aux | grep php
参考: https://segmentfault.com/a/1190000003503671
相关文章推荐
- TPS和QPS的区别
- php中一个"异类"语法: $a && $b = $c;
- IIS6自带FTP安装及配置方法
- IIS 设置FTP用户名和密码
- PHP利用CURL方法模拟POST提交数据并获得返回值的小细节
- 对laravel5概念的理解 -- 门面模式(Facade)
- PHP Warning: date() [function.date]: It is not saf
- yii2 createDirectory 文件上传的保存文件和递归创建文件夹
- 初识ThinkPHP框架
- php处理时间过长时返回空数据
- 使用ChannelSftp.chmod方法进行赋权
- 利用PHP程序设定防止MySQL注入或HTML表单滥用
- FastCgi与PHP-fpm关系
- PHP通过header实现文本文件的下载
- Laravel timestamps 设置为unix时间戳
- yii2 根据文件生成hash格式图片目录并返回绝对路径
- PHP iconv 解决utf-8和gb2312编码转换问题
- php实现xml与json之间的相互转换功能实例
- PHP 真正多线程的使用
- Yii在save时更新字段(time())