目錄
一,什麼是PEAR與Benchmark類
二,為什麼要分析PHP讀寫Cookie情況
三,效能測試代碼
四,效能測試結果
五,效能測試總結
六,setcookie函數說明
七,附效能測試原始碼下載
參考資料
一,什麼是PEAR與Benchmark類
請參考PHP效能最佳化系列
第二期 PHP效能最佳化工具篇Benchmark類調試執行時間
第一期 PHP效能最佳化準備篇圖解PEAR安裝
二,為什麼要分析PHP讀寫Cookie情況
1,什麼是Cookie?
Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料。
2,PHP與Cookie
PHP通過內建函數setcookie()寫cookie,通過$_COOKIE全域變數讀cookie,在實際開發中,讀寫Cookie是與使用者互動最主要的方式之一,並且使用也非常頻繁,因些需要瞭解PHP在讀寫操作Cookie的效能與效率問題。
三,效能測試代碼
編寫三個函數,分別為寫cookie、讀cookie和讀寫cookie,代碼如下:
代碼如下 |
複製代碼 |
<?php require_once "Benchmark/Iterate.php"; $bench = new Benchmark_Iterate; function set(){ setcookie("TestCookie", time(), time()+3600, "/", "", 1); } function get(){ return isset($_COOKIE['TestCookie']) ? $_COOKIE['TestCookie'] : ''; } function cookie(){ get(); set(); } $bench->run(50,"set"); //$bench->run(50,"get"); //$bench->run(50,"cookie"); $result = $bench->get(); ?> |
使用Benchmark_Iterate類工具分別調用各個函數50次擷取PHP讀寫Cookie的平均執行時間並組建圖表。
四,效能測試結果
1,PHP寫Cookie的執行時間
圖解:使用PHP內建函數setcookie()向用戶端發送一個 HTTP cookie,寫Cookie的執行時間 0.00072s左右 注s表示秒
2,PHP讀Cookie的執行時間
圖解:使用全域變數$_COOKIE擷取用戶端cookie值,讀Cookie的執行時間 0.00051s左右
3,PHP讀寫Cookie的執行時間
先讀取cookie值,然後再向用戶端發送一個 HTTP cookie,讀寫Cookie的執行時間 0.00088s左右
五,效能測試總結
通過折線圖可以清楚看到,setcookie() 函數向用戶端發送一個 HTTP cookie需要的執行時間大約是0.00072s左右,也就是0.7毫秒,PHP讀取Cookie的執行時間為0.00051s左右,也就是0.5毫秒,如果同時讀寫操作Cookie需要的執行時間為0.00088s,也就是0.8毫秒左右,這些操作在秒的時代基本上執行的時間非常短,但請不要小看這個值,正常的PHP內建函數執行的時間大約在0.3毫秒左右,相對而言讀寫Cookie的執行時間是比較耗時的,因此,在實際開發中要盡量少用這樣的函數,充分考慮讀寫Cookie的情況,特別是寫cookie的情況!
毫秒世界還在繼續,請關注下一期PHP效能最佳化系列。
六,setcookie函數說明
setcookie() 函數向用戶端發送一個 HTTP cookie。
代碼如下 |
複製代碼 |
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) |
1,cookie 是由伺服器發送到瀏覽器的變數。
2,cookie 通常是伺服器嵌入到使用者電腦中的小文字檔。每當電腦通過瀏覽器請求一個頁面,就會發送這個 cookie。
3,cookie 的名稱指定為相同名稱的變數。例如,如果被發送的 cookie 名為 "name",會自動建立名為 $user 的變數,包含 cookie 的值。
4,必須在任何其他輸出發送前對 cookie 進行賦值。
5,如果成功,則該函數返回 true,否則返回 false。