關於require, include的性能
測試數據:
有一個數組 , 一共3萬條數據, 1MB大小, 我分成2種方法放數據來測試//sexinsex
1. array.php 直接新建個空php文件, 把數組放進去 <?php $array = array(...3萬數組...); ?>
2. array.txt 把數組serialize後保存
測試程序:
復制內容到剪貼板 代碼:for ($i=0 ;$i<100; $i++) {
require(dirname(__FILE__)./array.php);
}
結果:
頁面執行時間: 12.8904 秒
頁面執行時間: 12.8863 秒
頁面執行時間: 12.8942 秒
頁面執行時間: 12.8992 秒
頁面執行時間: 12.9013 秒
require和include速度一樣,結果就不寫了
測試程序:
復制內容97gan到剪貼板 代碼:for ($i=0 ;$i<100; $i++) {
$all = unserialize(file_get_contents(dirname(__FILE__)./array.txt));
}
結果:
頁面執行時間: 3.7988 秒
頁面執行時間: 3.8125 秒
頁面執行時間: 3.8118 秒
頁面執行時間: 3.8062 秒
頁面執行時間: 3.8311 秒
因此,引申出2點結論此教程來源於97xxoo教程網(www.97xxoo.org)
查看完整的教程請點:http://www.97xxoo.org/article/1/2008/20081124428.shtml
1. 在寫一些類或函數的時候, 大數組不要放在程序裡, 應該用file_get_contents方法讀取
2. 做緩存的方式, file_get_contents再unserialize要比require和include快, 比如sablog和discuz的緩存方式就有問題, 它們是把數據庫裡的內容, 程序讀出來再存成可以require的數組, 具體程序我沒再看了, var_export就可以搞定, 但實現起來, serialize要方便直觀容易得多
3. 關於安全性, php直接require的方式, 雖然可以在頭頂上加上 defined()來判斷
但file_get_contents方法安全性可以這樣做, 把重要數據都放在一個目錄裡, 如/data/然後在/data/裡放個.htaccess, 寫deny from all, 或者在根目錄放.htaccess加個文件後綴的規則禁止都可以
小技巧, just so so.....