【发布时间】:2020-01-31 14:06:28
【问题描述】:
我真的很困惑,如果你能解释一下,我会很高兴的。
我有什么:
1) Laravel Forge 单服务器。
2) 那里有两个站点(暂存和生产)
3) 为每个队列设置 1 个(FORGE 上的登台和生产)
问题: 我有通过队列生成的pdf。看起来即使队列是从暂存代码中执行的,有时生产站点的队列也会运行。看了很多后,我总结他们互相搞乱是因为他们在同一台服务器上。所以这就是我所做的。这是 config/queue.php。
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => env('QUEUE_NAME', 'default'), // i made this instead of default as it was
'retry_after' => 90,
],
之后,由于我有不同的 env 文件用于暂存和生产,因此我在其中放置了不同的 QUEUE_NAME 值。比如说.staging.env QUEUE_NAME=staging 和.prod.env QUEUE_NAME=production。
然后我转到 My Laravel Forge 的暂存站点,添加了一个这样的队列:
Connection: database
Queue: staging
我也搬到了 My Laravel Forge 的产品站点,添加了一个队列,但另一个不同。
Connection: database
Queue: production
在这一切之后,看起来问题可能已经消失了。
问题 1) 你认为我所做的是否正确,最重要的是,足以让我的问题不再出现?
问题 2) 暂存站点和生产站点的部署脚本的末尾都有 php artisan queue:restart。我认为如果我将某些内容上传到登台服务器并且该行被执行,它也会重新启动生产队列。这似乎真的很糟糕。我找不到任何东西可以像这样传递参数来重新启动:
php artisan queue:restart --queue=staging
【问题讨论】:
标签: php laravel queue laravel-forge