我的基本目标是使用Yii2 Web应用程序在PHP中实现异步触发器
我需要运行php批处理作业,但我不想在 browser / cron 中等待完成这项工作。 为了运行作业,我需要使用我的应用程序的不同文件,如
http://myapp/foojob.php
foojob.php应该异步调用许多php实例[每个实例承载一个作业]基于手头的可用工作。调用的时间限制(foojob.php)小于60sec.i需要在超过超时值之前触发新的php实例。
该应用程序是自托管产品。它将得到各种托管服务的工作。共享主机不允许/为其客户提供任何外部扩展。
答案 0 :(得分:1)
您可以采用一种方法,在该方法中,您发送正确的标头以使浏览器关闭连接,然后同步运行该过程,它看起来与最终用户异步。
这是我很久以前写的一些你可以看到的例子。 http://www.phpclasses.org/package/8388-PHP-Defer-execution-of-actions-until-the-script-ends.html
我认为yii中有一些地方可以在内容发送后挂钩,你可以做类似的事情。
它的简短版本 header(“Content-Length:”。$ length); 标题(“连接:关闭”);
ob_flush(); // headers
echo $html;
flush();
doWork();
答案 1 :(得分:0)
我为非阻塞后台作业编写了一个php库。这个图书馆有助于实现我发布的目标
作曲家图书馆 https://packagist.org/packages/devbabuind/non-blocking-php