日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
PHP企業(yè)級(jí)應(yīng)用緩存技術(shù)詳解

之前我們?cè)钊氲奶接戇^(guò)PHP緩存技術(shù),其中主要提到了數(shù)據(jù)緩存。數(shù)據(jù)緩存主要是指數(shù)據(jù)庫(kù)查詢緩存,每次訪問(wèn)頁(yè)面的時(shí)候,都會(huì)先檢測(cè)相應(yīng)的緩存數(shù)據(jù)是否存在,如果不存在,就連接數(shù)據(jù)庫(kù),得到數(shù)據(jù), 并把查詢結(jié)果序列化后保存到文件中,以后同樣的查詢結(jié)果就直接從緩存表或文件中獲得。

創(chuàng)新互聯(lián)是專業(yè)的敘州網(wǎng)站建設(shè)公司,敘州接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行敘州網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

用的最廣的例子看Discuz的搜索功能,把結(jié)果ID緩存到一個(gè)表中,下次搜索相同關(guān)鍵字時(shí)先搜索緩存表。

舉個(gè)常用的方法,多表關(guān)聯(lián)的時(shí)候,把附表中的內(nèi)容生成數(shù)組保存到主表的一個(gè)字段中,需要的時(shí)候數(shù)組分解一下,這樣的好處是只讀一個(gè)表,壞處就是兩個(gè) 數(shù)據(jù)同步會(huì)多不少步驟,數(shù)據(jù)庫(kù)永遠(yuǎn)是瓶頸,用硬盤(pán)換速度,是這個(gè)的關(guān)鍵點(diǎn)。

頁(yè)面緩存

每次訪問(wèn)頁(yè)面的時(shí)候,都會(huì)先檢測(cè)相應(yīng)的緩存頁(yè)面文件是否存在,如果不存在,就連接數(shù)據(jù)庫(kù),得到數(shù)據(jù),顯示頁(yè)面并同時(shí)生成緩存頁(yè)面文件,這樣下次訪問(wèn) 的時(shí)候頁(yè)面文件就發(fā)揮作用了。(模板引擎和網(wǎng)上常見(jiàn)的一些緩存類(lèi)通常有此功能)

時(shí)間觸發(fā)緩存

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

內(nèi)容觸發(fā)緩存

當(dāng)插入數(shù)據(jù)或更新數(shù)據(jù)時(shí),強(qiáng)制更新緩存。

靜態(tài)緩存

這里所說(shuō)的靜態(tài)緩存是指靜態(tài)化,直接生成HTML或xml等文本文件,有更新的時(shí)候重生成一次,適合于不太變化的頁(yè)面,這就不說(shuō)了。

內(nèi)存緩存

Memcached是高性能的,分布式的內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問(wèn)速度。

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

讀庫(kù)的例子:

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

PHP的緩沖器

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

MySQL緩存

這也算非代碼級(jí)的,經(jīng)典的數(shù)據(jù)庫(kù)就是用的這種方式,看下面的運(yùn)行時(shí)間,0.09xxx之類(lèi)的。

 
 
 
  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. #user  nobody;
  2. worker_processes  4;
  3. error_log  logs/error.log crit;
  4. pid        logs/nginx.pid;
  5. worker_rlimit_nofile 10240;
  6. events {
  7. use epoll;
  8. worker_connections  51200;
  9. }
  10. http {
  11. include       mime.types;
  12. default_type  application/octet-stream;
  13. sendfile    on;
  14. keepalive_timeout 65;
  15. tcp_nodelay on;
  16. # server pool
  17. upstream bspfrontsvr {
  18. server 10.10.10.224:80   weight=1;
  19. server 10.10.10.221:80   weight=1;
  20. }
  21. upstream bspimgsvr {
  22. server 10.10.10.201:80   weight=1;
  23. }
  24. upstream bspstylesvr {
  25. server 10.10.10.202:80   weight=1;
  26. }
  27. upstream bsphelpsvr {
  28. server 10.10.10.204:80   weight=1;
  29. }
  30. upstream bspwsisvr {
  31. server 10.10.10.203:80   weight=1;
  32. }
  33. upstream bspadminsvr {
  34. server 10.10.10.222:80   weight=1;
  35. }
  36. upstream bspbuyersvr {
  37. server 10.10.10.223:80   weight=1;
  38. }
  39. upstream bspsellersvr {
  40. server 10.10.10.225:80   weight=1;
  41. }
  42. upstream  bsploginsvr  {
  43. server 10.10.10.220:443  weight=1;
  44. }
  45. upstream  bspregistersvr  {
  46. server 10.10.10.220:80  weight=1;
  47. }
  48. log_format  test_com  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
  49. ‘$status $body_bytes_sent “$http_referer” “$http_user_agent” ‘;
  50. #——————————————————————–
  51. #img.test.com
  52. server {
  53. listen       10.10.10.230:80;
  54. server_name  img.test.com;
  55. location / {
  56. proxy_pass      http://bspimgsvr;
  57. include         proxy_setting.conf;
  58. }
  59. access_log  logs/img.log  test_com;
  60. }
  61. #style.test.com
  62. server {
  63. listen       10.10.10.230:80;
  64. server_name  style.test.com;
  65. location / {
  66. proxy_pass      http://bspstylesvr;
  67. include         proxy_setting.conf;
  68. }
  69. access_log  logs/style.log  test_com;
  70. }
  71. #help.test.com
  72. server {
  73. listen       10.10.10.230:80;
  74. server_name  help.test.com;
  75. location / {
  76. proxy_pass      http://bsphelpsvr;
  77. include         proxy_setting.conf;
  78. }
  79. access_log  logs/help.log  test_com;
  80. }
  81. #admin.test.com
  82. server {
  83. listen       10.10.10.230:80;
  84. server_name  admin.test.com;
  85. location / {
  86. proxy_pass      http://bspadminsvr;
  87. include         proxy_setting.conf;
  88. }
  89. access_log  logs/admin.log  test_com;
  90. }
  91. #buyer.test.com
  92. server {
  93. listen       10.10.10.230:80;
  94. server_name  buyer.test.com;
  95. location / {
  96. proxy_pass      http://bspbuyersvr;
  97. include         proxy_setting.conf;
  98. }
  99. access_log  logs/buyer.log  test_com;
  100. }
 
 
 
  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. proxy_redirect          off;
  68. proxy_set_header        Host $host;
  69. proxy_set_header        X-Real-IP $remote_addr;
  70. proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  71. client_max_body_size    10m;
  72. client_body_buffer_size 128k;
  73. proxy_connect_timeout   90;
  74. proxy_send_timeout      90;
  75. proxy_read_timeout      90;
  76. proxy_buffer_size       4k;
  77. proxy_buffers           4 32k;
  78. proxy_busy_buffers_size 64k;
  79. proxy_temp_file_write_size 64k;

mod_proxy的例子:

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

文章名稱:PHP企業(yè)級(jí)應(yīng)用緩存技術(shù)詳解
網(wǎng)站路徑:http://www.5511xx.com/article/ccdegee.html