成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP企業級應用緩存技術詳解

開發 后端 前端
好的程序不光是代碼寫的好,整體架構很重要,當然,其中涉及的因素有很多。本文將給大家介紹一些PHP在企業級應用中常用的緩存技術,包括數據緩存、頁面緩存等等。

之前我們曾深入的探討過PHP緩存技術,其中主要提到了數據緩存。數據緩存主要是指數據庫查詢緩存,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接數據庫,得到數據, 并把查詢結果序列化后保存到文件中,以后同樣的查詢結果就直接從緩存表或文件中獲得。

用的最廣的例子看Discuz的搜索功能,把結果ID緩存到一個表中,下次搜索相同關鍵字時先搜索緩存表。

舉個常用的方法,多表關聯的時候,把附表中的內容生成數組保存到主表的一個字段中,需要的時候數組分解一下,這樣的好處是只讀一個表,壞處就是兩個 數據同步會多不少步驟,數據庫永遠是瓶頸,用硬盤換速度,是這個的關鍵點。

頁面緩存

每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接數據庫,得到數據,顯示頁面并同時生成緩存頁面文件,這樣下次訪問 的時候頁面文件就發揮作用了。(模板引擎和網上常見的一些緩存類通常有此功能)

時間觸發緩存

檢查文件是否存在并且時間戳小于設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大,那么就用緩存,否則更新緩存。

內容觸發緩存

當插入數據或更新數據時,強制更新緩存。

靜態緩存

這里所說的靜態緩存是指靜態化,直接生成HTML或xml等文本文件,有更新的時候重生成一次,適合于不太變化的頁面,這就不說了。

內存緩存

Memcached是高性能的,分布式的內存對象緩存系統,用于在動態應用中減少數據庫負載,提升訪問速度。

  1. <?php 
  2. $memcache = new Memcache;  
  3. $memcache->connect(‘localhost’, 11211) or die (“Could not connect”);  
  4. $version = $memcache->getVersion();  
  5. echo “Server’s version: “.$version.”\n”;  
  6. $tmp_object = new stdClass;  
  7. $tmp_object->str_attr = ‘test’;  
  8. $tmp_object->int_attr = 123;  
  9. $memcache->set(‘key’, $tmp_object, false, 10) or die (“Failed to save data at the server”);  
  10. echo “Store data in the cache (data will expire in 10 seconds)\n”;  
  11. $get_result = $memcache->get(‘key’);  
  12. echo “Data from the cache:\n”;  
  13. var_dump($get_result);  
  14. ?> 

讀庫的例子:

  1. <?php 
  2. $sql = ‘SELECT * FROM users’;  
  3. $key = md5($sql);   //memcached 對象標識符  
  4. if ( !($datas = $mc->get($key)) ) {  
  5.  
  6. //  在 memcached 中未獲取到緩存數據,則使用數據庫查詢獲取記錄集  
  7.  
  8. echo “n”.str_pad(‘Read datas from MySQL.’, 60, ‘_’).”n”;  
  9. $conn = mysql_connect(‘localhost’, ‘test’, ‘test’);  
  10. mysql_select_db(‘test’);  
  11. $result = mysql_query($sql);  
  12. while ($row = mysql_fetch_object($result))  
  13. $datas[] = $row;  
  14.  
  15. //  將數據庫中獲取到的結果集數據保存到 memcached 中,以供下次訪問時使用  
  16.  
  17. $mc->add($key, $datas);  
  18. } else {  
  19. echo “n”.str_pad(‘Read datas from memcached.’, 60, ‘_’).”n”;  
  20. }  
  21. var_dump($datas);  
  22. ?> 

PHP的緩沖器

比如eaccelerator,apc,phpa,xcache等等。

MySQL緩存

這也算非代碼級的,經典的數據庫就是用的這種方式,看下面的運行時間,0.09xxx之類的。

  1. [client]  
  2. ……  
  3. default-character-set=gbk 
  4. default-storage-engine=MYISAM 
  5. max_connections=600 
  6. max_connect_errors=500 
  7. back_log=200 
  8. interactive_timeout=7200 
  9. query_cache_size=64M 
  10. ……  
  11. table_cache=512 
  12. ……  
  13. myisam_max_sort_file_size=100G 
  14. myisam_max_extra_sort_file_size=100G 
  15. myisam_sort_buffer_size=128M 
  16. key_buffer_size=1024M 
  17. read_buffer_size=512M 
  18. ……  
  19. thread_concurrency=8 

#p#

基于反向代理的Web緩存

如Nginx,SQUID,mod_PRoxy(apache2以上又分為mod_proxy和mod_cache)

NGINX的例子:

  1. <nginx.conf> 
  2. #user  nobody;  
  3. worker_processes  4;  
  4. error_log  logs/error.log crit;  
  5. pid        logs/nginx.pid;  
  6. worker_rlimit_nofile 10240;  
  7. events {  
  8. use epoll;  
  9. worker_connections  51200;  
  10. }  
  11. http {  
  12. include       mime.types;  
  13. default_type  application/octet-stream;  
  14. sendfile    on;  
  15. keepalive_timeout 65;  
  16. tcp_nodelay on;  
  17. # server pool  
  18. upstream bspfrontsvr {  
  19. server 10.10.10.224:80   weight=1;  
  20. server 10.10.10.221:80   weight=1;  
  21. }  
  22.  
  23. upstream bspimgsvr {  
  24. server 10.10.10.201:80   weight=1;  
  25. }  
  26.  
  27. upstream bspstylesvr {  
  28. server 10.10.10.202:80   weight=1;  
  29. }  
  30.  
  31. upstream bsphelpsvr {  
  32. server 10.10.10.204:80   weight=1;  
  33. }  
  34.  
  35. upstream bspwsisvr {  
  36. server 10.10.10.203:80   weight=1;  
  37. }  
  38.  
  39. upstream bspadminsvr {  
  40. server 10.10.10.222:80   weight=1;  
  41. }  
  42.  
  43. upstream bspbuyersvr {  
  44. server 10.10.10.223:80   weight=1;  
  45. }  
  46.  
  47. upstream bspsellersvr {  
  48. server 10.10.10.225:80   weight=1;  
  49. }  
  50. upstream  bsploginsvr  {  
  51. server 10.10.10.220:443  weight=1;  
  52. }  
  53. upstream  bspregistersvr  {  
  54. server 10.10.10.220:80  weight=1;  
  55. }  
  56. log_format  test_com  ‘$remote_addr – $remote_user [$time_local] “$request” ‘  
  57. ‘$status $body_bytes_sent “$http_referer” “$http_user_agent” ‘;  
  58. #——————————————————————–  
  59. #img.test.com  
  60. server {  
  61. listen       10.10.10.230:80;  
  62. server_name  img.test.com;  
  63. location / {  
  64. proxy_pass      http://bspimgsvr;  
  65. include         proxy_setting.conf;  
  66. }  
  67. access_log  logs/img.log  test_com;  
  68. }  
  69.  
  70. #style.test.com  
  71. server {  
  72. listen       10.10.10.230:80;  
  73. server_name  style.test.com;  
  74. location / {  
  75. proxy_pass      http://bspstylesvr;  
  76. include         proxy_setting.conf;  
  77. }  
  78. access_log  logs/style.log  test_com;  
  79. }  
  80.  
  81. #help.test.com  
  82. server {  
  83. listen       10.10.10.230:80;  
  84. server_name  help.test.com;  
  85. location / {  
  86. proxy_pass      http://bsphelpsvr;  
  87. include         proxy_setting.conf;  
  88. }  
  89. access_log  logs/help.log  test_com;  
  90. }  
  91.  
  92. #admin.test.com  
  93. server {  
  94. listen       10.10.10.230:80;  
  95. server_name  admin.test.com;  
  96. location / {  
  97. proxy_pass      http://bspadminsvr;  
  98. include         proxy_setting.conf;  
  99. }  
  100. access_log  logs/admin.log  test_com;  
  101. }  
  102.  
  103. #buyer.test.com  
  104. server {  
  105. listen       10.10.10.230:80;  
  106. server_name  buyer.test.com;  
  107. location / {  
  108. proxy_pass      http://bspbuyersvr;  
  109. include         proxy_setting.conf;  
  110. }  
  111. access_log  logs/buyer.log  test_com;  
  1. #seller.test.com  
  2. server {  
  3. listen       10.10.10.230:80;  
  4. server_name  seller.test.com;  
  5. location / {  
  6. proxy_pass      http://bspsellersvr;  
  7. include         proxy_setting.conf;  
  8. }  
  9. access_log  logs/seller.log  test_com;  
  10. }  
  11. #wsi.test.com  
  12. server {  
  13. listen       10.10.10.230:80;  
  14. server_name  wsi.test.com;  
  15. location / {  
  16. proxy_pass      http://bspwsisvr;  
  17. include         proxy_setting.conf;  
  18. }  
  19. access_log  logs/wsi.log  test_com;  
  20. }  
  21. #www.test.com  
  22. server {  
  23. listen       10.10.10.230:80;  
  24. server_name  www.test.com   *.test.com;  
  25. location ~ ^/NginxStatus/ {  
  26. stub_status on;  
  27. access_log off;  
  28. }  
  29. location / {  
  30. proxy_pass      http://bspfrontsvr;  
  31. include         proxy_setting.conf;  
  32. }  
  33. access_log  logs/www.log  test_com;  
  34. error_page   500 502 503 504  /50x.html;  
  35. location = /50x.html {  
  36. root   html;  
  37. }  
  38. }  
  39. #login.test.com  
  40. server {  
  41. listen       10.10.10.230:443;  
  42. server_name  login.test.com;  
  43. ssl                  on;  
  44. ssl_certificate      cert.pem;  
  45. ssl_certificate_key  cert.key;  
  46. ssl_session_timeout  5m;  
  47. ssl_protocols  SSLv2 SSLv3 TLSv1;  
  48. ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
  49. ssl_prefer_server_ciphers   on;  
  50. location / {  
  51. proxy_pass        https://bsploginsvr;  
  52. include         proxy_setting.conf;  
  53. }  
  54. access_log  logs/login.log  test_com;  
  55. }  
  56. #login.test.com for register  
  57. server {  
  58. listen       10.10.10.230:80;  
  59. server_name  login.test.com;  
  60. location / {  
  61. proxy_pass        http://bspregistersvr;  
  62. include         proxy_setting.conf;  
  63. }  
  64. access_log  logs/register.log  test_com;  
  65. }  
  66.  
  67. }  
  68. <conf/proxy_setting.conf> 
  69. proxy_redirect          off;  
  70. proxy_set_header        Host $host;  
  71. proxy_set_header        X-Real-IP $remote_addr;  
  72. proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
  73. client_max_body_size    10m;  
  74. client_body_buffer_size 128k;  
  75. proxy_connect_timeout   90;  
  76. proxy_send_timeout      90;  
  77. proxy_read_timeout      90;  
  78. proxy_buffer_size       4k;  
  79. proxy_buffers           4 32k;  
  80. proxy_busy_buffers_size 64k;  
  81. proxy_temp_file_write_size 64k; 

mod_proxy的例子:

  1. <VirtualHost *> 
  2. ServerName www.zxsv.com  
  3. ServerAdmin admin@zxsv.com  
  4. # reverse proxy setting  
  5. ProxyPass / http://www.zxsv.com:8080/  
  6. ProxyPassReverse / http://www.zxsv.com:8080/  
  7. # cache dir root  
  8. CacheRoot “/var/www/proxy”  
  9. # max cache storage  
  10. CacheSize 50000000  
  11. # hour: every 4 hour  
  12. CacheGcInterval 4  
  13. # max page expire time: hour  
  14. CacheMaxExpire 240  
  15. # Expire time = (now – last_modified) * CacheLastModifiedFactor  
  16. CacheLastModifiedFactor 0.1  
  17. # defalt expire tag: hour  
  18. CacheDefaultExpire 1  
  19. # force complete after precent of content retrived: 60-90%  
  20. CacheForceCompletion 80  
  21. CustomLog /usr/local/apache/logs/dev_access_log combined  
  22. </VirtualHost> 

原文鏈接:http://www.blueidea.com/tech/program/2009/6605.asp

【編輯推薦】

  1. PHP緩存機制的具體講解
  2. PHP緩存控制器的詳細介紹
  3. PHP數據緩存類必要性分析
  4. 深入探討PHP緩存技術
責任編輯:王曉東 來源: blueidea
相關推薦

2011-01-28 09:29:51

PHPWeb

2012-06-14 13:26:22

2021-10-11 14:28:25

TypeScript企業級應用

2010-01-04 16:38:07

企業級Silverli

2011-12-12 19:40:59

邦諾存儲

2009-01-03 14:54:36

ibmdwWebSphere

2009-06-03 14:24:12

ibmdwWebSphere

2009-12-14 20:13:57

IBM

2012-06-26 15:23:58

2013-07-02 13:53:48

App企業級應用

2013-04-26 15:13:26

Ted YuHBase大數據全球技術峰會

2015-05-26 09:41:45

china-pub

2011-12-01 15:29:07

2012-05-14 09:29:40

云應用

2012-05-15 15:21:29

企業級

2009-09-22 11:59:19

2009-07-07 14:19:54

2019-03-05 12:56:41

APP企業級應用應用程序

2012-11-12 09:38:12

云計算實踐私有云金蝶系統

2014-12-03 10:39:56

世紀互聯公有云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品高清久久 | 日韩中文字幕在线不卡 | 欧美成人精品在线 | 免费一二区 | 日韩视频高清 | 国产视频久久久 | 91久色 | 91极品尤物在线播放国产 | 免费在线观看一区二区三区 | av网站免费看 | 日韩在线中文字幕 | 蜜桃毛片 | 欧美三级免费观看 | 亚洲综合日韩精品欧美综合区 | 精品国产高清一区二区三区 | 成人亚洲视频 | a级黄色片视频 | 99国产精品99久久久久久粉嫩 | 久草网址| 久久伊人精品一区二区三区 | 国产精品成人一区二区三区 | 精品视频久久久久久 | 欧美极品在线观看 | 亚洲精品www | 亚洲精品久久久久中文字幕二区 | 日韩国产高清在线观看 | 欧美一级毛片免费观看 | 欧美在线视频观看 | 久久久久免费精品国产 | 懂色中文一区二区在线播放 | 欧美精品一区在线 | 成人h片在线观看 | 香蕉视频在线播放 | 日韩久久久久久 | 91精品在线看 | 成人国产在线视频 | 高清国产一区二区 | 国产有码 | 激情五月综合网 | 国产乱人伦 | 国产一区二区三区在线免费 |