【问题标题】:Laravel queues in Azure serverAzure 服务器中的 Laravel 队列
【发布时间】:2018-01-26 14:26:41
【问题描述】:

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

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

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

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

非常感谢您!

【问题讨论】:

    标签: windows laravel azure queue azure-webjobs


    【解决方案1】:

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

    关于如何做到这一点,请查看Ernesto's answer

    对于 Azure,您可以为您的网络应用创建一个新的网络作业,然后上传一个 .cmd 文件包括这样的命令。

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

    并将其定义为触发和0 * * * * * frecuency cron。

    这种方式对我有用。

    更多信息请参考Run Background tasks with WebJobs

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2015-07-18
      • 2021-11-29
      • 2016-12-29
      • 2018-12-18
      • 2020-12-17
      相关资源
      最近更新 更多