PHP如何实现多进程? [ 未指定版本 ]
我现在有这样一种需求: 用户点击download按钮,但是由于数据量太大,后台不马上生成数据文件,而是先返回ok, 然后后台进行一系列查询数据生成文件发送邮件的操作.
我知道用mysql生成一个任务表,然后后台用crontab周期访问生成文件的url能够达到想要的效果.
但是我想如果使用PHP多进程能否完成这样的任务?如果可以该如何写?谢谢
共 2 个回答
-
$pid = pcntl_fork(); //父进程和子进程都会执行下面代码 if ($pid == -1) { //错误处理:创建子进程失败时返回-1. die('could not fork'); } else if ($pid) { //父进程会得到子进程号,所以这里是父进程执行的逻辑 pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。 } else { //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。 }
共 2 条回复@yiissy001 int pcntl_wait ( int &$status [, int $options = 0 ] )
status
pcntl_wait()将会存储状态信息到status 参数上,这个通过status参数返回的状态信息可以用以下函数 pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig()以及 pcntl_wstopsig()获取其具体的值。luoxiao 觉得很赞
yiissy001
注册时间:2013-12-04
最后登录:2017-09-25
在线时长:24小时55分
最后登录:2017-09-25
在线时长:24小时55分
- 粉丝7
- 金钱2529
- 威望90
- 积分3669