Laravel:运行队列:在Windows Azure Web App上持续监听

问题描述 投票:7回答:2

我对这个问题感到有点傻,但我似乎无法在互联网上找到这个问题的答案。搜索了几个小时后,我发现在linux服务器上你使用Supervisor在你的网站上连续运行“php artisan queue:listen”(有或没有守护进程)来处理推送到队列的作业。这一切都很好,但如果我想在Windows Azure Web应用程序上执行此操作,该怎么办?在搜索解决方案后,我发现:

  • 做一个cron工作,每分钟(或每X分钟)运行“php artisan队列:听”,我真的不喜欢这个解决方案,并希望避免它,特别是如果网站获得更多的流量;
  • 添加一个连续运行“php artisan queue:listen”的WebJob(这里的问题是我不知道如何编写WebJob的脚本......);

我想请大家帮忙,知道哪些是正确的解决方案,如果有更好的解决方案,如果WebJob是最好的,我该如何为此编写脚本?提前致谢。

php laravel azure queue artisan
2个回答
4
投票

简而言之,Supervisor是nohup的一种现代替代方案(没有挂断),其他一些零碎的东西也随之而来。简而言之,还有其他资源可以让任务在后台运行(守护进程),而我用于基于Windows的项目(很少tbh)的解决方案是Forever,我通过以下方式发现:https://stackoverflow.com/a/18226392/5912664

C:\myprojectroot > forever -c php artisan queue:listen --queue=some_nice_queue --tries=3

怎么样?

安装node for Windows,然后使用npm安装Forever

C:\myprojectroot > npm install -g forever

如果你因为在Windows上运行Node而遇到困难,我建议使用Windows Package Manager,Chocolatey

https://chocolatey.org/packages?q=node

一定要检查Forever创建的任何日志文件,因为我留下了足够长的时间来消耗30Gb的磁盘空间!


3
投票

对于Azure,您可以为您的Web应用程序创建一个新的webjob,并上传包含这样命令的.cmd文件。

php %HOME%\site\wwwroot\artisan queue:work --daemon

并将其定义为triguered和0 * * * * *频率cron。

那种方式对我有用。

最好。

© www.soinside.com 2019 - 2024. All rights reserved.