php怎么创建进程,在php中为长时间运行的进程创建后台进程

好的,请原谅我,如果这是另一个问题的重复,但在搜索后我还没有找到一个明确的答案.我基本上想要做的是让我的php web应用程序触发一些事件(如电子邮件或报告生成器)可能需要几分钟才能完成并立即将控制权返回给页面.我来自.NET世界,可以通过线程轻松完成.

所以这是工作流程:

>用户点击“生成报告”按钮

> ajax调用’../blah/generate-report’并立即返回

>流程启动并运行直到完成,然后用户可以开展业务

>用户可以返回报告页面并查看进度:“报告50%完成”

实现这一目标的最佳方法是什么?简短的回答很好.我不想为我编写代码,只是一些指导.我查看了shell_exec,但我不确定这是否是最佳方式,或者是否,如何使用它来处理Web应用程序中的功能. (如果这有任何区别,我正在使用Yii框架).谢谢.

-Jason

解决方法:

在PHP中启动新线程线程的最佳(也是唯一的AFAIK)方法是使用curl之类的东西创建一个新的PHP请求.

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.yoursite.com/background-script.php');

curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);

curl_exec($ch);

curl_close($ch);

这将运行脚本,并立即返回页面.当然没有回调,所以最好的办法是将background-script.php的输出放入数据库,然后每隔一段时间从客户端ping数据库,直到看到结果为止.

标签:php,ajax,yii,background-process

来源: https://codeday.me/bug/20190831/1772946.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值