我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP缓存技术的实例应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP缓存技术的实例应用

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

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

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

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

页面缓存

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

时间触发缓存

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

内容触发缓存

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

静态缓存

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

内存缓存

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

<?php $memcache = new Memcache;  $memcache->connect(&lsquo;localhost&rsquo;, 11211) or die (“Could not connect”);  $version = $memcache->getVersion();  echo “Server&rsquo;s version: “.$version.”\n”;  $tmp_object = new stdClass;  $tmp_object->str_attr = &lsquo;test&rsquo;;  $tmp_object->int_attr = 123;  $memcache->set(&lsquo;key&rsquo;, $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(&lsquo;key&rsquo;);  echo “Data from the cache:\n”;  var_dump($get_result);  ?>

读库的例子:

<?php $sql = &lsquo;SELECT * FROM users&rsquo;;  $key = md5($sql);   //memcached 对象标识符  if ( !($datas = $mc->get($key)) ) {   //  在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集   echo “n”.str_pad(&lsquo;Read datas from MySQL.&rsquo;, 60, &lsquo;_&rsquo;).”n”;  $conn = mysql_connect(&lsquo;localhost&rsquo;, &lsquo;test&rsquo;, &lsquo;test&rsquo;);  mysql_select_db(&lsquo;test&rsquo;);  $result = mysql_query($sql);  while ($row = mysql_fetch_object($result))  $datas[] = $row;   //  将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用   $mc->add($key, $datas);  } else {  echo “n”.str_pad(&lsquo;Read datas from memcached.&rsquo;, 60, &lsquo;_&rsquo;).”n”;  }  var_dump($datas);  ?>

PHP的缓冲器

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

MySQL缓存

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

[client]  &hellip;&hellip;  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 &hellip;&hellip;  table_cache=512 &hellip;&hellip;  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 &hellip;&hellip;  thread_concurrency=8

基于反向代理的Web缓存

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

NGINX的例子:

<nginx.conf> #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  &lsquo;$remote_addr &ndash; $remote_user [$time_local] “$request” &lsquo;  &lsquo;$status $body_bytes_sent “$http_referer” “$http_user_agent” &lsquo;;  #&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&ndash;  #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;  }   }  <conf/proxy_setting.conf> 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的例子:

<VirtualHost *> 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 &ndash; 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  </VirtualHost>

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP缓存技术的实例应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP缓存技术的实例应用

本篇内容主要讲解“PHP缓存技术的实例应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP缓存技术的实例应用”吧!之前我们曾深入的探讨过PHP缓存技术,其中主要提到了数据缓存。数据缓存主要是
2023-06-17

PHP如何实现缓存技术

这篇文章给大家分享的是有关PHP如何实现缓存技术的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP,一门最近几年兴起的Web设计脚本语言,由于它的强大和可伸缩性,近几年来得到长足的发展,PHP相比传统的ASP网
2023-06-17

PHP-FPM性能提高实践:缓存技术的应用与优化

引言:随着互联网技术的不断发展,PHP作为一种广泛应用的编程语言,在网站和应用程序开发中扮演着重要的角色。然而,由于PHP是一种脚本语言,其性能相对较低,容易造成对服务器的过大压力。为了提高PHP-FPM性能,我们可以采用缓存技术来优化代码
2023-10-21

PHP如何实现web缓存技术

本篇内容介绍了“PHP如何实现web缓存技术”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Web缓存的概念Web缓存是指将已被访问过或预
2023-07-05

PHP中怎么实现缓存技术

这篇文章主要为大家展示了“PHP中怎么实现缓存技术”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中怎么实现缓存技术”这篇文章吧。1、全页面静态化缓存也就是将页面全部生成html静态页面,用
2023-06-16

PHP中的缓存技术有什么用

这篇文章主要讲解了“PHP中的缓存技术有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的缓存技术有什么用”吧!缓存是提高性能最好的方式,例如减少网络I/O、减少磁盘I/O 等,
2023-06-20

探索缓存技术在 PHP 函数性能中的应用

缓存技术在 php 函数性能中应用广泛,主要通过将频繁访问的数据缓存至内存或文件中提升函数执行速度。常见的 php 缓存技术有:内存缓存:将数据存储在服务器内存中,访问速度极快。文件缓存:将数据存储在文件中,访问速度较内存缓存慢,但比数据库
探索缓存技术在 PHP 函数性能中的应用
2024-04-12

php常用缓存技术有哪些

在PHP中,常用的缓存技术有以下几种:1. 文件缓存:将数据以文件的形式存储在服务器的文件系统中。可以使用PHP的文件操作函数(如file_get_contents()和file_put_contents())来读写文件。2. Memcac
2023-08-24

PHP开发缓存的实际应用案例分析

PHP开发缓存的实际应用案例分析引言:随着互联网的快速发展,网站的访问量大幅增加。为了提高网站的性能和响应速度,开发人员需要使用缓存来减少数据库查询,加快数据访问速度。本文将重点介绍PHP中缓存的实际应用案例,包括数据缓存和页面缓存,并提供
PHP开发缓存的实际应用案例分析
2023-11-07

PHP缓存技术的简单介绍

本篇内容介绍了“PHP缓存技术的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php缓存技术的应用时相当普遍的,也许有些人还对这项技
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录