首頁 >後端開發 >php教程 >PHP 是讀取資料庫在模版遍歷快還是 從檔案讀取html快?

PHP 是讀取資料庫在模版遍歷快還是 從檔案讀取html快?

WBOY
WBOY原創
2016-09-28 08:54:091262瀏覽

之前在做一個商城網站,有一個模組是定制首頁,時間趕直接提取頁面html內容用php寫進文件裡,首頁讀取的時候,再讀取那個文件輸出給模版。題目的讀取資料庫指讀取自訂數據,不是html內容。

現在不趕時間了,想知道:

  1. 如果在多人存取並發高的情況下,是讀取檔案快?還是從資料庫讀取資料快?

  2. 如果寫入檔案內容多,檔案比較大的情況是不是讀取時間慢?

  3. 我用的TP框架,直接在模版裡會不會更好

  4. 再問一下,想測試並發要怎麼測試?要搜哪些關鍵字?

ps:剛出來工作的小白,求回答指教

回覆內容:

之前在做一個商城網站,有一個模組是定制首頁,時間趕直接提取頁面html內容用php寫進文件裡,首頁讀取的時候,再讀取那個文件輸出給模版。題目的讀取資料庫指讀取自訂數據,不是html內容。

現在不趕時間了,想知道:

  1. 如果在多人存取並發高的情況下,是讀取檔案快?還是從資料庫讀取資料快?

  2. 如果寫入檔案內容多,檔案比較大的情況是不是讀取時間慢?

  3. 我用的TP框架,直接在模版裡會不會更好

  4. 再問一下,想測試並發要怎麼測試?要搜哪些關鍵字?

ps:剛出來工作的小白,求回答指教

  1. 資料庫的資料也是存在檔案裡的,不考慮資料庫做記憶體快取的情況,單純讀取檔案當然要比讀取資料庫快,因為資料庫還要經過查詢流程以及其他處理流程。但是,如果檔案數量過多時,還需要考慮檔案系統的查詢速度,這個速度在檔案過多時是慢於資料庫查詢的。

  2. 檔案讀取時間自然取決於檔案的大小,但是如果檔案中所有的內容都是你想要的,那麼這個時間自然是不可缺少的。如果你只想讀取部分的文件內容,可以透過seek來移動文件指標。

  3. TP框架的模板是進過編譯的,也就是說,實際執行時不會使用你寫的模板文件,而是使用編譯後的模板,所以你大可放心的使用include,不必在意性能的問題。

  4. 並發測試準確來說應該叫壓力測試,搜尋壓力測試方案即可。

針對你的問題,

  1. 高併發的情況下,直接資料庫一定會很慢,至少在資料庫上有一個Cache層,Cache層效率:

    <code>文件 < 内存(memcache、redis) < Cache阵列
    文件也属于Cache的一种</code>

    看你的需求看起來還有產生靜態檔案的步驟,這裡提供你幾個關鍵字:

    • ob_start

    • 偽靜態

    • CDN

  2. 如果寫入的檔案內容多,這個沒辦法,我們一般會使用Cache等來做整體架構方案,而非單純寫入這麼簡單

    如果讀取的檔案(特指PHP檔)比較大,考慮開啟OpCache加強速度

  3. 你這是include一個範本文件,也就是PHP執行的include,效率等同PHP的include
    如果存取的頁面全部靜態文件,需要嵌入子模板的情況,SSI(ApachenginX)會比PHP的include快很多

    所以,你問題的答案:HTML 是最快的,都不需要執行PHP,但需要事先產生好

  4. 並發測試,從關鍵字apache benchmark開始,接下來你會搜到很多你想要的內容。

首先,它們速度差異不大,檔案快點,但是如果都放資料庫好管理一些。

其次呢,誰快不重要,這些CMS類型的網站,可以透過靜態化來優化,靜態化後和頁面生成時間就無關了。

首先, 內存>> 文件
其次, 資料庫也是把資料存放在文件的(當然,資料庫有查詢快取)
非關係型的資料, 當然是存文件快
但同個資料夾下不可存放大量文件(尋址慢),可使用檔案名稱目錄分割, 如:
檔案名稱dsaferdfsasxfsfsdf.dat
取前兩個字元建立一階目錄, 存放為
ds/dsaferdfsasxfsfsdf.dat
TP自帶簡易快取方法S(), 預設為檔案驅動, 如果快取驅動用Memcahced或Redis的話, 應該會比檔案快, 前提是Memached或Redis伺服器在本機上, 或在千兆以上的區域網路內

並發測試的話, Linux和Darwin(OS X)核心系統可以用ab 指令(ApacheBench), 如:

ab -k -n 1000 -c 100 "http://www.baidu.com"

// 發起1000個請求, 每次併發100(該值有會有上限, 視系統設定, 一般預設為256)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn