微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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数据库,直到看到结果为止.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐