不在命令行下执行symfony的messenger(how to consume messenger without commen line) langziyang Symfony博客 228 views symfony的messenger搭配队列可实现异步任务,一般操作方法是在命令行下运行 ``` php bin/console messenger:consume async ``` 如果命令行断开比如说服务器重启,则后面的任务都不能执行,所以一般搭配使用supervisor或者systemd开机运行该命令。 但是如果并不想在命令行下执行而又想用异步队列怎么处理呢?这里提供一个变通的方法。 symfony有一个process可以在PHP里运行linux的命令,所以请看下面的代码: ``` use Symfony\Component\Process\Process; public function processMessage() { $process = new Process(['/var/www/test/bin/console','messenger:consume']); $process->run(); } ``` 只需要定时执行该方法即可。注意: # The process "'/var/www/test/bin/console' 'messenger:consume'" exceeded the timeout of 60 seconds. 也就是说使用该方法,messenger只能执行60秒就会中断,所以需要轮询该任务。 帮助PHPZlc项目! 与任何开源项目一样, 贡献代码 或 文档 是最常见的帮助方式, 但我们也有广泛的 赞助机会。 0 赞赏 加入技术群 评论 去登录