博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php多进程-注意事项
阅读量:3985 次
发布时间:2019-05-24

本文共 884 字,大约阅读时间需要 2 分钟。

php多进程-注意事项

1、子进程中的输出会由父进程输出来。

2、pcntl_wait() 和 pcntl_waitpid() 函数调用的是操作系统的wait方法,是一种阻塞操作。
3、父进程一定要等待子进程退出后才退出。
4、如果有多个子进程,则需要while循环来wait,因为只要有一个子进程退出了就会触发pcntl_wait执行。
5、子进程可以通过继承上下文的方式继承父进程的连接句柄,来做一些操作,同时子进程和父进程都可以释放
或者销毁这个连接。而且,父/子进程一旦退出默认就会释放全部的句柄。

connect_error){ die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);}$pid = pcntl_fork();if($pid == -1){ echo 'fork error'.PHP_EOL;}elseif($pid){ echo 'this is father '.posix_getpid().PHP_EOL;}else{ $re = $mysqli->query("insert into member(name,age,time) values('ddd', 23, ".time().")"); var_dump($re);// 打印在父进程 sleep(3);// 核实 pcntl_wait 是否会阻塞 echo 'this is son '.posix_getpid().PHP_EOL;}// 阻塞$nPID = pcntl_wait($nStatus);if ($nPID > 0) { echo "{$nPID} exit\n";}// $mysqli 已经被子进程释放了,所以这里会报错 MySQL server has gone away$ret = $mysqli->query('select * from member');var_dump($ret);

转载地址:http://vrxui.baihongyu.com/

你可能感兴趣的文章
[转]分布式之消息队列复习精讲
查看>>
[转]分布式之redis复习精讲
查看>>
设计模式-单例模式
查看>>
[转]Java泛型详解
查看>>
Eclipse pyDev环境搭建
查看>>
排序算法(2)-冒泡排序及优化
查看>>
[并发]synchronized与volatile
查看>>
[转]String 之 new String()和 intern()方法深入分析
查看>>
java中Object类 源代码详解
查看>>
I/O模型
查看>>
javap与 i++,++i
查看>>
自定义类加载器
查看>>
SimpleDateFormat 的线程安全问题
查看>>
Joda-Time 简介
查看>>
Comparable与Comparator
查看>>
一个死锁的例子
查看>>
IO流(一)
查看>>
设计模式-装饰器模式
查看>>
ping github 请求超时
查看>>
Try Redis(Redis 简介)
查看>>