簡體   English   中英

如何處理 mysql 和 php 中的“max_user_connections”?

[英]How can I handle the 'max_user_connections' in mysql and php?

當我在服務器中有多個請求時會出現錯誤消息。 我的服務器托管告訴我,我的最大用戶連接數僅為 15。我該如何管理此請求並避免此錯誤。?

在 my.cnf 中:

max_connections=100

或者,如果您無法更改此文件,則必須限制 php 軟件中的連接數(如果您使用的是池或類似軟件)以避免達到此限制。

根據您的環境,答案可能會有很大差異。 要點是您需要更好地管理您的連接; 記住在完成后關閉它們,並在可以時重新使用它們。 在不了解您的堆棧的情況下,我無法給您更好的建議。 您可能希望檢查是否正在打開持久連接而不是關閉它。

  1. 切換到不同的托管服務提供商/包

  2. 通過重構查詢和更改索引來提高查詢的性能

  3. 在需要運行查詢之前不要在代碼中打開數據庫連接

  4. 在不再需要數據庫連接后立即顯式關閉它們

  5. 如果您重復運行相同的查詢,請在 DBMS 之外緩存數據(與使用 DB 緩存相比,效率要低得多/需要更多的代碼)

對於仍在尋找有關此主題的最新信息的人 mysql_pconnect:此擴展在 PHP 5.5 中已棄用。 0,它在 PHP 7.0 中被刪除。 相反,應使用 MySQLi 或 PDO_MySQL 擴展。 可以嘗試在連接到 mysqli 時在主機名前加上“p:”,以利用持久性行為。

mysql_pconnect 的替代方案包括:

1) mysqli_connect() 帶 p: 主機前綴 示例:

mysqli_connect('p:192.168.x.y', 'USER', 'PWD', 'DB', 3306);

2) PDO::__construct() 使用 PDO::ATTR_PERSISTENT 作為驅動程序選項**

例子:

   try {
        $conn = new PDO("mysql:host=$mysql_host;dbname=$database",  $mysql_user, $mysql_password, array(PDO::ATTR_PERSISTENT=>true));
    } catch (PDOException $e) {
        die ("<b>Cannot connect to database, check user credentials.</b>");
   }

暫無
暫無

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

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