千家信息网

PHP缓存技术的实例应用

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,本篇内容主要讲解"PHP缓存技术的实例应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP缓存技术的实例应用"吧!之前我们曾深入的探讨过PHP缓存技术
千家信息网最后更新 2024年11月29日PHP缓存技术的实例应用

本篇内容主要讲解"PHP缓存技术的实例应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP缓存技术的实例应用"吧!

之前我们曾深入的探讨过PHP缓存技术,其中主要提到了数据缓存。数据缓存主要是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据, 并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。

举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个 数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。

页面缓存

每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)

时间触发缓存

检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

内容触发缓存

当插入数据或更新数据时,强制更新缓存。

静态缓存

这里所说的静态缓存是指静态化,直接生成HTML或xml等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。

内存缓存

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

connect(‘localhost’, 11211) or die ("Could not connect");  $version = $memcache->getVersion();  echo "Server’s version: ".$version."\n";  $tmp_object = new stdClass;  $tmp_object->str_attr = ‘test’;  $tmp_object->int_attr = 123;  $memcache->set(‘key’, $tmp_object, false, 10) or die ("Failed to save data at the server");  echo "Store data in the cache (data will expire in 10 seconds)\n";  $get_result = $memcache->get(‘key’);  echo "Data from the cache:\n";  var_dump($get_result);  ?>

读库的例子:

get($key)) ) {   //  在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集   echo "n".str_pad(‘Read datas from MySQL.’, 60, ‘_’)."n";  $conn = mysql_connect(‘localhost’, ‘test’, ‘test’);  mysql_select_db(‘test’);  $result = mysql_query($sql);  while ($row = mysql_fetch_object($result))  $datas[] = $row;   //  将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用   $mc->add($key, $datas);  } else {  echo "n".str_pad(‘Read datas from memcached.’, 60, ‘_’)."n";  }  var_dump($datas);  ?>

PHP的缓冲器

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

MySQL缓存

这也算非代码级的,经典的数据库就是用的这种方式,看下面的运行时间,0.09xxx之类的。

[client]  ……  default-character-set=gbk default-storage-engine=MYISAM max_connections=600 max_connect_errors=500 back_log=200 interactive_timeout=7200 query_cache_size=64M ……  table_cache=512 ……  myisam_max_sort_file_size=100G myisam_max_extra_sort_file_size=100G myisam_sort_buffer_size=128M key_buffer_size=1024M read_buffer_size=512M ……  thread_concurrency=8

基于反向代理的Web缓存

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

NGINX的例子:

 #user  nobody;  worker_processes  4;  error_log  logs/error.log crit;  pid        logs/nginx.pid;  worker_rlimit_nofile 10240;  events {  use epoll;  worker_connections  51200;  }  http {  include       mime.types;  default_type  application/octet-stream;  sendfile    on;  keepalive_timeout 65;  tcp_nodelay on;  # server pool  upstream bspfrontsvr {  server 10.10.10.224:80   weight=1;  server 10.10.10.221:80   weight=1;  }   upstream bspimgsvr {  server 10.10.10.201:80   weight=1;  }   upstream bspstylesvr {  server 10.10.10.202:80   weight=1;  }   upstream bsphelpsvr {  server 10.10.10.204:80   weight=1;  }   upstream bspwsisvr {  server 10.10.10.203:80   weight=1;  }   upstream bspadminsvr {  server 10.10.10.222:80   weight=1;  }   upstream bspbuyersvr {  server 10.10.10.223:80   weight=1;  }   upstream bspsellersvr {  server 10.10.10.225:80   weight=1;  }  upstream  bsploginsvr  {  server 10.10.10.220:443  weight=1;  }  upstream  bspregistersvr  {  server 10.10.10.220:80  weight=1;  }  log_format  test_com  ‘$remote_addr – $remote_user [$time_local] "$request" ‘  ‘$status $body_bytes_sent "$http_referer" "$http_user_agent" ‘;  #——————————————————————–  #img.test.com  server {  listen       10.10.10.230:80;  server_name  img.test.com;  location / {  proxy_pass      http://bspimgsvr;  include         proxy_setting.conf;  }  access_log  logs/img.log  test_com;  }   #style.test.com  server {  listen       10.10.10.230:80;  server_name  style.test.com;  location / {  proxy_pass      http://bspstylesvr;  include         proxy_setting.conf;  }  access_log  logs/style.log  test_com;  }   #help.test.com  server {  listen       10.10.10.230:80;  server_name  help.test.com;  location / {  proxy_pass      http://bsphelpsvr;  include         proxy_setting.conf;  }  access_log  logs/help.log  test_com;  }   #admin.test.com  server {  listen       10.10.10.230:80;  server_name  admin.test.com;  location / {  proxy_pass      http://bspadminsvr;  include         proxy_setting.conf;  }  access_log  logs/admin.log  test_com;  }   #buyer.test.com  server {  listen       10.10.10.230:80;  server_name  buyer.test.com;  location / {  proxy_pass      http://bspbuyersvr;  include         proxy_setting.conf;  }  access_log  logs/buyer.log  test_com;  }
#seller.test.com  server {  listen       10.10.10.230:80;  server_name  seller.test.com;  location / {  proxy_pass      http://bspsellersvr;  include         proxy_setting.conf;  }  access_log  logs/seller.log  test_com;  }  #wsi.test.com  server {  listen       10.10.10.230:80;  server_name  wsi.test.com;  location / {  proxy_pass      http://bspwsisvr;  include         proxy_setting.conf;  }  access_log  logs/wsi.log  test_com;  }  #www.test.com  server {  listen       10.10.10.230:80;  server_name  www.test.com   *.test.com;  location ~ ^/NginxStatus/ {  stub_status on;  access_log off;  }  location / {  proxy_pass      http://bspfrontsvr;  include         proxy_setting.conf;  }  access_log  logs/www.log  test_com;  error_page   500 502 503 504  /50x.html;  location = /50x.html {  root   html;  }  }  #login.test.com  server {  listen       10.10.10.230:443;  server_name  login.test.com;  ssl                  on;  ssl_certificate      cert.pem;  ssl_certificate_key  cert.key;  ssl_session_timeout  5m;  ssl_protocols  SSLv2 SSLv3 TLSv1;  ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  ssl_prefer_server_ciphers   on;  location / {  proxy_pass        https://bsploginsvr;  include         proxy_setting.conf;  }  access_log  logs/login.log  test_com;  }  #login.test.com for register  server {  listen       10.10.10.230:80;  server_name  login.test.com;  location / {  proxy_pass        http://bspregistersvr;  include         proxy_setting.conf;  }  access_log  logs/register.log  test_com;  }   }   proxy_redirect          off;  proxy_set_header        Host $host;  proxy_set_header        X-Real-IP $remote_addr;  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  client_max_body_size    10m;  client_body_buffer_size 128k;  proxy_connect_timeout   90;  proxy_send_timeout      90;  proxy_read_timeout      90;  proxy_buffer_size       4k;  proxy_buffers           4 32k;  proxy_busy_buffers_size 64k;  proxy_temp_file_write_size 64k;

mod_proxy的例子:

 ServerName www.zxsv.com  ServerAdmin admin@zxsv.com  # reverse proxy setting  ProxyPass / http://www.zxsv.com:8080/  ProxyPassReverse / http://www.zxsv.com:8080/  # cache dir root  CacheRoot "/var/www/proxy"  # max cache storage  CacheSize 50000000  # hour: every 4 hour  CacheGcInterval 4  # max page expire time: hour  CacheMaxExpire 240  # Expire time = (now – last_modified) * CacheLastModifiedFactor  CacheLastModifiedFactor 0.1  # defalt expire tag: hour  CacheDefaultExpire 1  # force complete after precent of content retrived: 60-90%  CacheForceCompletion 80  CustomLog /usr/local/apache/logs/dev_access_log combined  

到此,相信大家对"PHP缓存技术的实例应用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

缓存 数据 数据库 文件 页面 时间 时候 查询 技术 应用 例子 内容 结果 更新 实例 静态 搜索 生成 关键 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 鞍山纺织软件开发 数据库数据操作的基础 如何看服务器远程密码 扩展数据库表空间 网络安全管理部门及职责 正数网络技术有限公司面经 比较好的网络安全培训机构 计算机网络技术大专分数 软件开发的基本要素包括 醴陵棋牌软件开发公司 本地同时创建两个数据库用户 重要时期网络安全保障工作情况 天津潮流软件开发服务价格优惠 天恒网络技术有限公司 江苏省网络安全责任制内容及细则 服务器管理员看其他用户桌面 网络安全意识志愿者活动 l3426上什么服务器主板 web服务器编程语言 公交企业服务器搭建 奉贤区正规网络技术开发 民办的计算机软件开发费用 三洋服务器报警代码A10 网络安全法主要针对哪些 更改数据库编码指定 连别人数据库 计算机网络技术大专分数 保定八戒互联网科技有限公司 网络安全毕业设计教学视频 如何查看服务器流量
0