得到這個在我的錯誤日誌飄飛,想弄清楚這個問題:SQLSTATE [HY000] [2002]連接超時
[04-Oct-2014 13:25:42 America/Chicago] Failed to connect to database: SQLSTATE[HY000] [2002] Connection timed out [04-Oct-2014 13:25:42 America/Chicago] PHP Fatal error: Call to a member function prepare() on a non-object in /home/spconlin/public_html/spc_app/app/add_log.php on line 28
連接腳本:
<?php
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
// db config
$db_host = '127.0.0.1';
$db_database = '*****';
$db_user = '*****';
$db_pass = '*****';
//db connection
try {
$db = new PDO("mysql:host=$db_host;dbname=$db_database;charset=utf8", $db_user, $db_pass,
array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //PDO::ERRMODE_SILENT is default setting
PDO::ATTR_PERSISTENT => false
)
);
}
catch(PDOException $e) {
error_log("Failed to connect to database: ".$e->getMessage());
}
?>
我做了什麼:
- 從'lo calhost」爲127.0.0.1的連接
- 開關持久連接到假
之前做上述變化,以我的連接如上圖所示我得到SQLSTATE[HY000] [2002] Resource temporarily unavailable
而非connection timed out
。
一些背景信息 - 特別是這個add_log.php腳本在實際使用時將信息添加到數據庫,每秒最多幾次。雖然差不多99%的時間這個特定的腳本在錯誤中被引用,但有時候其他腳本也是如此。我意識到腳本指向真的並不意味着什麼,因爲這不是錯誤發生的地方(它發生在連接而不是add_log.php腳本中),但它很奇怪,它幾乎總是引用這個特定的文件,導致我相信這個問題經常被相繼提出是這個問題的一部分。
DB是innodb。
這實際上是我的服務器和數據庫或連接到它的人/計算機的問題?是否可能'他們'與'我'有不良聯繫,這是什麼原因導致錯誤?
編輯:
難道是在我需要我的網頁上的連接腳本需要它的方式?由於該文件經常被「擊中」,它也會要求我的連接腳本與下面的行一樣多。請注意,我正在使用$_SERVER['DOCUMENT_ROOT']
(可能有影響?)。
require $_SERVER['DOCUMENT_ROOT'].'/custom/functions/connect.php';
你能用客戶端登錄到你的數據庫嗎?沒有PHP?通常這是一個MySQL資源問題 – 2014-10-05 02:17:52
什麼行代碼是在add_log.php行28?它似乎並不是你所包含的代碼的一部分。 – mschuett 2014-10-05 04:24:20
它與op中提到的不相關。錯誤發生在連接中,然後在下次使用$ db時觸發。腳本沒有「錯誤」 - 它們工作正常 - 我無法自己複製此錯誤,並且它不會一直髮生。 – user756659 2014-10-05 16:25:09