簡體   English   中英

PHP-持久連接,連接太多

[英]PHP - Persistant connections, too many connections

我有一個網站,隨時都有大約700-1000個用戶在線。 最近,我發現我的網站變得非常慢。 似乎存在某種瓶頸。

我當前的設置是我有一個index.php頁面,該頁面處理我的所有子頁面。 設計是這樣的:

include_once($settings['incpath'].'_ify_database.php');

    //Define the extra page levels. 
    $i = (isset($_GET['i']) ? inputFilter($_GET['i']) : 'h');
    $xp = (isset($_GET['p']) ? inputFilter($_GET['p']) : null);
    $xpp = (isset($_GET['n']) ? inputFilter($_GET['n']) : null);    

    switch($i){
        case 'h': // Home
            include($settings['themespath'].$config['active_theme'].'/indexheader.php');
            include($settings['pagepath'].'home.php');
            include($settings['themespath'].$config['active_theme'].'/indexfooter.php');
        break;
     }

這是我連接到數據庫( _ify_database.php )的方式:

try {
    $dsn = "mysql:host=" . $database['host'] . ";dbname=" . $database['db'];
    $dbh = new PDO($dsn, $database['user'], $database['pass'], array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));     
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // <== add this line
    }
catch(PDOException $e){
    echo $e->getMessage();
}

如您所見,我將持久連接設置為false

PDO::ATTR_PERSISTENT => false

如果將其啟用為TRUE ,則加載時間會增加Too Many Connections ,但是一段時間后,我會收到“ Too Many Connections錯誤。

我究竟做錯了什么? 如果網站上有500人,那它很快。 如果有900-1000,則是加載時間的兩倍。

限制來自php的最大持久連接數,或增加mysql中的限制。

ini_set('mysql.max_persistent','500');
ini_set('mysqli.max_persistent','500');

並在mysql文檔中發現了這一點,似乎與之相關: https : //dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

暫無
暫無

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

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