0
我有一個網站,我有大約700-1000用戶在任何時候在線。最近我經歷過我的網站變得非常緩慢。似乎有某種瓶頸。PHP - 持久的連接,太多的連接
我目前的設置是我有一個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
錯誤。
我在做什麼錯?如果網站上有500人,這很快。如果有900-1000則加倍加載時間。
應該監控MySQL和真的,如果這些連接實際上正在使用,或只是閒置。在第一種情況下,可能會增加限制。 –
@ÁlvaroGonzález其中許多訪問者剛剛被重定向到我的網站,並且可能需要0 - 2分鐘。我怎樣才能防止這些連接閒置? – oliverbj
不確定你的意思是「重定向」...我沒有再次嘗試使用最近的PHP版本,但是我在過去遇到過不好的經歷,因爲MySQL驅動程序無法重複使用連接和不必要地打開新連接 - 一個'show processlist'查詢將顯示大多數連接爲「睡眠」。 –