国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP緩存技術詳談

2024-05-04 21:47:17
字體:
來源:轉載
供稿:網友

一、引論:PHP,一門最近幾年興起的web設計腳本語言,由于它的強大和可伸縮性,近幾年來得到長足的發展,php相比傳統的asp網站,在速度上有絕對的優勢,想mssql轉6萬條數據php如需要40秒,asp不下2分鐘.但是,由于網站的數據越來越多,我們渴求能更快速的調用數據,不必要每次都從數據庫掉,我們可以從其他的地方,比方一個文件,或者某個內存地址,這就是php的緩存技術,也就是Cache技術.

二、分析深入:一般來說,緩存的目的是把數據放在一個地方讓訪問的更快點,毫無疑問,內存是最快的,但是,幾百M的數據能往內存放么?這不現實,當然,有的時候臨時放如服務器緩存,如ob_start()這個緩存頁面開啟的話在發送文件頭之前頁面內容都被緩存在內存中,知道等頁面輸出自動清楚或者等待ob_get_contents的返回,或者被ob_end_clean顯示的清除,這在靜態頁面的生成中能很好的利用,在模板中能得到很好的體現,我的這篇文章深入的討論了:談PHP生成靜態頁面,這是一種方式,但這是臨時性的,不是解決我們問題的好方法.

另外,在asp中有一對象application,可以保存公用的參數,這也算點緩存,但在php,我至今沒看到開發者產出這種對象,的確,沒必要.asp.net的頁面緩存技術就用的是viewstate,而cache就是文件關聯,(不一定準確),文件被修改,更新緩存,文件沒被修改而且不超時(注釋1),就讀取緩存,返回結果,就是這個思路,看看這個源碼:

  1. <?php 
  2. class cache{ 
  3. /* 
  4. Class Name: cache 
  5. Description: control to cache data,$cache_out_time is a array to save cache date time out. 
  6. Version: 1.0 
  7. Author: 老農 cjjer 
  8. Last modify:2013-2-26 
  9. Author URL: http://m.survivalescaperooms.com 
  10. */ 
  11. private $cache_dir; 
  12. private $expireTime=180;//緩存的時間是 60 秒 
  13. function __construct($cache_dirname){ 
  14. if(!@is_dir($cache_dirname)){ 
  15. if(!@mkdir($cache_dirname,0777)){ 
  16. $this->warn('緩存文件不存在而且不能創建,需要手動創建.'); 
  17. return false
  18. $this->cache_dir = $cache_dirname; 
  19. function __destruct(){ 
  20. echo 'Cache class bye.'
  21.  
  22. function get_url() { 
  23. if (!isset($_SERVER['REQUEST_URI'])) { 
  24. $url = $_SERVER['REQUEST_URI']; 
  25. }else
  26. $url = $_SERVER['script_NAME']; 
  27. $url .= (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : ''
  28.  
  29. return $url; 
  30.  
  31. function warn($errorstring){ 
  32. echo "<b><font color='red'>發生錯誤:<pre>".$errorstring."</pre></font></b>"
  33.  
  34. function cache_page($pageurl,$pagedata){ 
  35. if(!$fso=fopen($pageurl,'w')){ 
  36. $this->warns('無法打開緩存文件.');//trigger_error 
  37. return false
  38. if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型鎖定 
  39. $this->warns('無法鎖定緩存文件.');//trigger_error 
  40. return false
  41. if(!fwrite($fso,$pagedata)){//寫入字節流,serialize寫入其他格式 
  42. $this->warns('無法寫入緩存文件.');//trigger_error 
  43. return false
  44. flock($fso,LOCK_UN);//釋放鎖定 
  45. fclose($fso); 
  46. return true
  47.  
  48. function display_cache($cacheFile){ 
  49. if(!file_exists($cacheFile)){ 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仪陇县| 安丘市| 南通市| 巴东县| 迁西县| 兴国县| 高台县| 南木林县| 海宁市| 保靖县| 南城县| 长宁区| 鲜城| 宕昌县| 隆昌县| 郎溪县| 建阳市| 阜新市| 砚山县| 左权县| 广安市| 池州市| 名山县| 扶风县| 兰西县| 道孚县| 得荣县| 尼木县| 汾西县| 长汀县| 建昌县| 凌海市| 扬州市| 望都县| 柏乡县| 酉阳| 衡山县| 江都市| 广河县| 江源县| 夏邑县|