2013-02-28 68 views
0

我有幾個PHP文件,每個文件需要一個Mysql連接。然後我有一個通用文件connect.php與MySQL基本數據庫查詢,我已經在Header.php中添加了這些文件。一次連接MySQL服務器

但是值得關注的是每次connect.php建立到DB的連接(因爲這包含在Header中)。這將是有害的MySql服務器,我的應用程序是大和約。 200個表格,其中有200萬個條目。我想通過php.ini進行數據庫連接,意味着一旦我配置了php.ini,那麼無需在代碼中添加mysql_connect()查詢任何地方。在php.ini中只有一個設置。請解釋如何做的步驟,我不熟悉php.ini

+0

這無關緊要。除非您使用持續連接,否則您仍然會爲每個請求創建一個新連接。持續連接有一些注意事項需要注意,這可能會導致可用連接耗盡。 – datasage 2013-02-28 19:38:18

+1

您無法通過php.ini連接到您的數據庫。 MySQL將完全能夠處理許多請求。 – Repox 2013-02-28 19:39:42

+0

現在大部分時間我面臨與表崩潰的問題.... – Majeed 2013-02-28 19:41:26

回答

0

我的應用程序很大,其中有200個表格,其中有200個條目

這並不大。然而,大量的表通常是一個很好的指標,你試圖分割你的數據並破壞規範化。

意味着一旦我設置php.ini中則沒有必要添加的mysql_connect()查詢任何在代碼中

是不是真的那麼難加的mysql_connect(); ?如果在ini文件或自動預置的包含文件中設置了用戶名/密碼,則甚至不需要明確設置。事實上,如果你包裹DB函數的包含文件,你可以懶洋洋地連接:

<?php 
ini_set('mysql.default_user', 'scott'); 
ini_set('mysql.default_password','pussycat'); 

$GLOBALS['my_db_handle']=false; 

function wrap_mysql_connect() 
{ 
    if (false===$GLOBALS['my_db_handle']) { 
     $GLOBALS['my_db_handle']=mysql_connect(); 
     @mysql_select_db('my_preferred_db', $GLOBALS['my_db_handle']); 
     @mysql_set_charset('utf8', $GLOBALS['my_db_handle']); 
    } 
    return $GLOBALS['my_db_handle']; 
} 

function wrap_mysql_query($sql) 
{ 
    if (false===$GLOBALS['my_db_handle']) { 
     wrap_mysql_connect(); 
    } 
    if (false===$GLOBALS['my_db_handle']) { 
     trigger_error(mysql_error()); 
     return false; 
    } 
    $result=mysql_query($sql, $GLOBALS['my_db_handle']); 
    if (false === $result) { 
     trigger_error(mysql_error()); 
     return false; 
    } 
    return result; 
} 

當您打開數據庫連接不被需要的時候,他們(和沒有明確關閉它們不再是必需的)不佔用資源不必要的是,開銷並不那麼大 - 謹防過早優化。

+0

請記住使用'mysqli_ *'。 – user1477388 2013-02-28 20:49:59