[英]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.