2011-02-28 61 views
0

我的db.php文件連接到,選擇並創建數據庫和表(如果它們不存在)。當我需要(「db.php」)在每個頁面的頂部時,它是否每次都重新運行該代碼?這最終會導致放緩,儘管是輕微的?我真的應該連接到數據庫,選擇它並檢查並創建新表,如果它們不存在於每個需要查詢數據庫的頁面上?這種情況是否有最佳做法?我擔心什麼都沒有?在每個php頁面的頂部是否包含require(「db.php」)?

+0

「我擔心什麼都沒有?」也許。 – BoltClock 2011-02-28 17:43:45

+1

從安全角度來看,允許您的網絡應用程序創建表格可能不是一個好主意。就個人而言,如果桌子不在那裏,我會讓它失敗並出現錯誤。要求本身並不是什麼大不了的事。 – Cfreak 2011-02-28 17:45:04

回答

2

「創建數據庫和表如果它們不存在」部分我將從引導過程中刪除:它可能是昂貴的,並且對每個請求運行肯定是不必要的。如果表格不存在,請讓代碼正常崩潰。

只需建立然而,數據庫連接對於大多數PHP應用程序來說非常標準,因爲它通常在大多數情況下(如果不是全部的話)都需要。

有可能建立一個「懶惰連接」的數據庫包裝,即只有在實際需要時建立連接,但我不會擔心這一點,除非你真的有理由基於性能測量。

0

每次你做一個require時,該文件就被添加到腳本代碼中。這段代碼需要在運行時由php編譯器處理。因此,您每次運行腳本時都需要添加大約1kb的代碼,這些代碼需要由您的cpu處理。所以是的,你放慢了速度,但是放慢速度是微不足道的,只有當你開始添加超過1MB的文件時纔會引起注意。 1MB的代碼是很多代碼。

0

你可以把連接和選擇放在那個文件中,但是如果它們不存在就創建它們對我來說似乎沒用。如果你創造它們,他們通常不會迷路。雖然建立連接通常是代碼中最慢的部分,但是你沒有多少選擇 - 但是你可以嘗試使用mysql_pconnect,一旦連接出現,mysql_pconnect就會更快。檢查here
需要文件時使用的額外時間對於肉眼來說是不可見的,可以這麼說,所以您不必擔心這一點。只要不過度使用,使用更多文件就更容易管理。

0

可以肯定地說,如果你不需要一段代碼,就不要調用它。但是,連接到數據庫的文件不會太多(可能是5行或6行不是非常苛刻的代碼)。

無論如何,如果您需要連接到您的數據庫,您沒有比包含該文件更多的選項。

1

我建議你,:

  1. 不建立連接到數據庫服務器,直到你實際上是查詢它;只需將它置於待機模式並在第一次查詢時進行連接即可。這就是Zend Framework的Zend_Db的工作原理,大多數框架都採用相同的思想:準備好資源,並在必要時使用它們。

  2. 使您的代碼和項目框架儘可能保持整潔。慢速代碼總是比不可讀的代碼更可取。

  3. 不要將工作程序與診斷混合使用。檢查Db及其表的完整性是診斷的一項任務,通常由Sysadmin定期執行(每週,每月等)。另一方面,工作慣例總是假設事情是honkie dorie,並希望在應對措施設置好的情況下(最壞的情況下建立這個應急預案並節省一天的時間)取得最好的結果,以防南下。

0

首先使用require_once不僅僅需要,基本上require_once(「db.php中」)將剛纔複製的代碼db.php中的內容,並將其粘貼其獲取調用其中。因此開銷=打開文件+讀取文件+複製文件+粘貼文件,最後解釋額外的數據。

相關問題