我有三个相同的Laravel应用程序正在运行,但在使用Laravel Forge的不同环境中运行。
让我们说这是三个网站:
site.com
(制作)staging.site.com
(分期)dev.site.com
(开发)在生产站点上,我运行Laravel Horizon来监控生产站点的队列。
当我在dev.site.com
上运行密码重设时,由于队列中发生异常,电子邮件不会发送给用户。
Illuminate \ Database \ Eloquent \ ModelNotFoundException:无查询结果 对于模型[App \ Models \ User]。在 /家庭/锻造/的 site.com /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:412
如果仔细查看错误,您会发现site.com
生产环境中发生了错误。因此,电子邮件在开发环境中被放入队列,但在生产环境中执行。
这是我的queue.php
配置:
<?php
return [
'default' => env('QUEUE_DRIVER', 'high'),
'connections' => [
'sync' => [
'driver' => 'sync',
],
'high' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
],
'medium' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
],
'low' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
],
],
'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
这些是Forge上所有三种环境的队列设置:
这是正常行为吗?或者有什么我做错了吗?
答案 0 :(得分:2)
听起来你在所有网站上使用相同的队列驱动程序并且它们具有相同的配置,对吧?如果是这种情况,那么您将在所有三个网站上汇集,这些网站会污染&#34;一个与其他人。您需要更改每个配置,以便它们具有单独的队列,这样它将使它们保持分离。您甚至可以拥有单独的redis,数据库,内存缓存等实例。事实上,我建议你至少做生产。