本文共 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/