Laravel queues in Azure server



我真的很纠结这个问题,这对我来说有点令人沮丧,因为它在 Linux 服务器中似乎很简单。我有一个Windows Azure Web App,我想在服务器上连续运行"php artisan queue:listen"来处理调度的作业。从我从文档中读到的内容来看,在 Linux 中,您只需使用 Supervisor 来不断运行命令并恢复它,以防它死机。根据我在网上发现的内容,Azure具有类似的功能,称为WebJobs,您可以在其中为他们提供要运行的脚本,然后决定它是按计划运行还是连续运行(有点像Laravel中的调度程序(。有了这个,我有两个问题。

  • 1 - 这是正确的解决方案吗?放置一个脚本以在 Web 作业上运行命令并让 Web 作业连续运行?
  • 2 - 我没有编写 php 脚本来运行命令行的经验,所以我所能做的就是这样:

echo shell_exec('php artisan queue:work'(;

问题是这没有给我命令的输出(当我在命令控制台上手动运行命令并处理作业时,我没有看到任何类似于"已处理"结果的内容(。能够读取命令的输出对我来说很重要,因为我希望能够检查日志中的错误,以防在无法处理作业时发生某些情况。从文档中shell_exec返回 null 以防抛出错误,所以我对如何处理这个问题完全一无所知。

提前非常感谢!

您可以使用直接上传包含命令php artisan queue:work的 .cmd 文件,而不是使用shell_exec(),然后您可以在Web 作业详细信息页面中找到输出日志。

关于如何做到这一点,请查看埃内斯托的答案。

对于 Azure,可以向 Web 应用创建新的 Web 作业,并上传 .cmd 文件包含如下命令。

php %HOME%sitewwwrootartisan queue:work --daemon

并将其定义为三重且0 * * * * *频率的 cron。

这样对我有用。

有关详细信息,请参阅使用 Web 作业运行后台任务。

最新更新