麻烦拍摄Laravel过多的连接

时间:2017-07-15 14:25:40

标签: php postgresql laravel

我在Postgresql数据库中使用单独的模式创建了一个相当简单的多租户应用程序。我保留了public模式,只有少数模型使用,然后其余模型使用tenant.我通过中间件从子域确定客户端然后,在我的客户端模型上调用以下函数设置连接的凭据。

public function logInAsClient()
{
    $settings = $this->settings;

    // set tenant db
    config([
        'client' => $settings,
        'client.id' => $this->id,
        'database.connections.tenant.schema' => $this->schema,
        'schema' => $this->schema,
        'domain' => $this->domain,
    ]);

    DB::disconnect('tenant');
    DB::reconnect('tenant');

    return true;
}

它在正常功能中运行良好,但我有几项任务要求我一次排队数百个作业。由于它们都在同一个应用程序上运行,因此我将client_id传递给每个作业,然后在句柄运行的开始处传递:

Client::find($this->client_id)->logInAsClient();

但是,运行此代码时出现以下错误:

PDOException: SQLSTATE[08006] [7] FATAL:  sorry, too many clients already
FATAL:  sorry, too many clients already

我不存在我的应用程序的任何其他部分,我正在连接或重新连接到数据库,所以我不确定这个问题可能来自哪里。如果有关于如何调试此类问题的任何提示,我们将不胜感激。

0 个答案:

没有答案