簡體   English   中英

PHP RestAPI MySQL數據庫多個連接

[英]PHP RestAPI MySQL Database multiple connections

我在php上有一個數據庫類,該類在啟動時會連接到數據庫,並用於執行查詢並通過RestAPI請求將數據從數據庫返回給用戶。 此處遇到的問題是,每次用戶發出HTTP請求時,都會啟動新的數據庫類,並在用戶使用RestAPI進行的每個查詢上建立新的連接。

數據庫類如下所示:

<?php
class DbHandler
{
    private $conn;
    function __construct()
    {
        require_once dirname(__FILE__) . '/db_connect.php';
        $db         = new DbConnect();
        $this->conn = $db->connect();
    }

    public function getSpotlight($user_id) {
      $stmt = $this->conn->prepare("SELECT *, (SELECT COUNT(*) FROM followers WHERE following = u.id) as followers, (SELECT COUNT(*) FROM posts WHERE user_id = u.id) as totalPosts from users u WHERE u.id NOT IN (select if(user_id = :var1, user_with, user_id) from friends where user_id = :var1 OR user_with = :var1) AND u.id != :var1 order by followers desc limit 10;");
      $stmt->bindParam(":var1", $user_id);
      $stmt->execute();
      $users = $stmt;
      $stmt  = null;
      return $users;
    }

DbConnect看起來像這樣:

<?php
class DbConnect
{
    private $conn;
    function __construct()
    {
    }

    function connect()
    {
        include_once dirname(__FILE__) . '/config.php';
        $host       = DB_HOST;
        $db_name    = DB_NAME;
        $user       = DB_USERNAME;
        $pass       = DB_PASSWORD;
        $this->conn = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass);
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        return $this->conn;
    }
}
?>

因此,基本上現在,當用戶調用index.php時,將啟動一個新的數據庫類,並且每次執行查詢時,每次都會建立一個新的連接,並且在請求完成后它將關閉。

直到我們有超過1000個用戶,並且每次增加響應時間,這都沒有問題,我檢查了mysql上的進程列表,並且連接不斷增加並退出,並且新的連接即將到來。

我不確定該問題的解決方案。 有什么方法可以使其在此DbHandler文件上保持持久連接? 或者我們可以實現PHP中的其他方法。 願意聽到此問題的解決方案。

也許這可以幫助https://www.phpfastcache.com/減少數據庫/ Webservice的調用

您的網站有10,000個在線訪問者,並且您的動態頁面必須在每次頁面加載時向數據庫或Web服務發送10,000次相同的查詢。\\使用phpFastCache,您的頁面僅向DB / WS發送1個查詢,並使用緩存以為其他9,999位訪客提供服務。\\您顯然可以決定滿足您需求的TTL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM