我有幾個不同對象的類都共享相同的數據庫。我希望這些對象共享相同的MySQLi連接,因此我不必爲每個對象都建立連接,但並非所有命令都需要活動的MySQLi連接,所以我想在需要時設置它。每次調用API時連接到MySQL服務器對我而言都是巨大的資源浪費。如何在沒有實際連接的情況下建立一個mysqli對象?
所以我的主要API將有這樣的事情(idealy):
$db = new mysqli();
$a = new objA($db);
class objA{
private $db;
function __construct($db){
$this->db = $db;
}
function doSomething(){
if(!$this->db->isConnected())
$this->db->connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
return $this->db->query(MY_QUERY);
}
}
因此,數據庫連接只會是建立,如果我會打電話$a->doSomething()
從API。這個設置也使我能夠在完全不同的對象中使用相同的MySQL連接。
如何獲取像$mysql->isConnected()
這樣的函數來檢查與MySQL數據庫的實際連接是否已構建,如果尚未建立,建立它?
您是否嘗試過使用辛格爾頓爲你的數據庫連接? –
這不是問題......我不想強制只有一個連接,我試圖阻止與MySQL服務器通信,直到我真的需要。 – patrick
您是否必須定義'$ db = new mysqli();'?是否有可能爲你分配'null'並驗證if($ this-> db === null)'那麼就沒有連接,並且你的'$ this-> db = new mysqli(); '在if語句中連接之前。 –