【问题标题】:Laravel Queue - Database in cache?Laravel 队列 - 缓存中的数据库?
【发布时间】:2020-03-27 13:34:06
【问题描述】:
  1. 我有一个包含多个数据库的应用程序;
  2. 我有一个“选择”正确数据库的功能;

问题是:当我启动php artisan queue:work --tries=3

项目只在第一次加入MySqlConnector.php。 所以,我可以在第一时间连接到我正确的数据库。

尝试失败

  1. 断开\DB::disconnect('database name')
  2. 清除缓存\Cache::flush();
  3. 更改mysql默认config(['database.connections.queue' => $correctDatabase]);

还有几个我什至不记得了。

如何确保每当我进入队列工作者时,我都会连接回数据库?

注意:我在 MySQLConnector 的 connect 方法中输入了正确的数据库配置。

public function connect(array $config)
{
     // ...
        // multipleDatabases is my custom function 
        if(multipleDatabases('connection') !== null) {
            $config = multipleDatabases('database');
        }
    // ...
}

这段代码运行良好。

【问题讨论】:

    标签: php laravel amazon-sqs laravel-queue


    【解决方案1】:

    我使用listen 而不是worker 解决了这个问题

    php artisan queue:listen --tries=3
    

    Laravel documentation

    当使用 queue:listen 命令时,您不必在代码更改后手动重启 worker;但是,此命令不如 queue:work: 高效:

    【讨论】:

    • 请记住,这会增加 CPU 使用率。
    • @GuillermoMansilla 不幸的是会增加,但是你知道我怎样才能只清除队列完成中的数据库信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2019-05-12
    • 2017-11-18
    • 2020-08-19
    • 2018-07-17
    • 2013-12-01
    相关资源
    最近更新 更多