我真的在努力解决这个问题,这对我来说有点令人沮丧,因为它在Linux服务器中似乎很简单。我有一个Windows Azure Web应用程序,我想在服务器上连续运行“php artisan queue:listen”来处理已分派的作业。根据我从文档中读到的内容,在Linux中,您只需使用Supervisor不断运行命令并恢复它,以防它死亡。从我在网上找到的,Azure有一个类似的功能,称为WebJobs,你可以为它们提供一个脚本来运行,然后决定它是应该按计划运行还是连续运行(有点像Laravel中的Scheduler)。有了这个,我有两个问题。
echo shell_exec('php artisan queue:work');
问题是这没有给我输出命令(我没有看到任何类似我在命令控制台上手动运行命令并处理作业时看到的“已处理”结果)。能够读取命令的输出对我来说很重要,因为我希望能够在无法处理作业时发生错误的情况下检查日志中的错误。从文档中,如果抛出错误,shell_exec会返回null,所以我对如何处理这个问题完全不了解。
提前非常感谢你!
答案 0 :(得分:0)
您可以直接上传包含命令shell_exec()
的.cmd文件,而不是使用php artisan queue:work
,然后您可以在 WebJob详细信息页面中找到输出日志。
关于如何执行此操作,请检查Ernesto's answer。
对于Azure,您可以为您的网络应用制作新的webjob,并上传.cmd 文件包括这样的命令。
php %HOME%\site\wwwroot\artisan queue:work --daemon
并将其定义为一个三角形和
这样对我有用。0 * * * * *
frecleency cron。
有关详细信息,请参阅Run Background tasks with WebJobs。