设为首页 收藏本站
查看: 761|回复: 0

[经验分享] php服务缓存加速

[复制链接]

尚未签到

发表于 2018-12-14 11:01:05 | 显示全部楼层 |阅读模式
  PHP服务加速缓存优化
  PHP缓存原理:
  当客户端请求一个PHP程序时,服务器的PHP引擎会解析改PHP程序,并将其编译为特定的操作码(Operate Code 简称 opcode),
  改文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存的原理:
  将编译后的操作码保存下来,并放到共享内存中,下一次调用PHP时重用。(节省了PHP引擎的编译时间)
  LA(N)MP环境PHP缓存加速器的原理:
  1)apache(nginx)接收到客户端的PHP程序访问请求。
  2)apache(nginx)把程序传递给PHP处理模块libphp5.so(php的FCGI--php-fpm)进程。
  3)PHP引擎(php-fpm进程)读取磁盘上的PHP文件,并将器加载到内存中解析。
  4)PHP处理模块libphp5.so(php解析器php.ini)将PHP源码编译成cpdode,把cpcode缓存起来。
  5)apache(nginx)接收到客户端的请求后,PHP引擎直接读取opcode文件。如果没有找到则重复1-4步。建立缓存。
  补充知识:
  locale 计算机软件运行的语言环境:
  # locale
  LANG=en_US.UTF-8
  LC_CTYPE="en_US.UTF-8"
  LC_NUMERIC="en_US.UTF-8"
  LC_TIME="en_US.UTF-8"
  LC_COLLATE="en_US.UTF-8"
  LC_MONETARY="en_US.UTF-8"
  LC_MESSAGES="en_US.UTF-8"
  LC_PAPER="en_US.UTF-8"
  LC_NAME="en_US.UTF-8"
  LC_ADDRESS="en_US.UTF-8"
  LC_TELEPHONE="en_US.UTF-8"
  LC_MEASUREMENT="en_US.UTF-8"
  LC_IDENTIFICATION="en_US.UTF-8"
  LC_ALL=
  

  locale 把按照所涉及到的使用习惯的各个方面分成12 大类,这12 个大类分别是:
  

  语言符号及其分类(LC_CTYPE)
  数字(LC_NUMBERIC)
  比较习惯(LC_COLLATE)
  时间显示格式(LC_TIME)
  货币单位(LC_MONETARY)
  信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
  行么书写方式(LC_NAME)
  地址书写方式(LC_ADDRESS)
  电话号码书写方式(LC_TELEPHONE)
  度量衡表达方式(LC_MEASUREMENT)
  默认纸张尺寸大小(LC_PAPER)
  对locale 自身包含信息的概述(LC_IDENTIFICATION)
  

  而这些信息的配置通常放在/usr/share/i18n/locales 目录下。
  部分软件需求Perl.为了解决Perl的一些环境问题带来错误。可以通过修改环境变量来避免。
  # echo 'export LC_ALL=C' >> /etc/profile
  # tail  -1 /etc/profile
  # source /etc/profile
  安装Perl相关的软件依赖包  # yum install perl-devel 或 # yum install perl-CPAN
  安装 PHP XCache 缓存加速模块
  X Cache 把PHP程序编译后的数据(opcode)缓存到共享内存里,避免相同的程序重复编译。
  用户请求相同的PHP程序时,可以直接使用缓存中已编译好的数据,提高访问速度。
  # wget https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2 --no-check-certificate
  # tar jxvf xcache-3.2.0.tar.bz2
  # /application/php/bin/phpize
  phpize 作用:用来扩展PHP扩展模块的,通过phpize可以建立PHP的外挂模块。
  提供软件包平台环境分析和编译安装的必须的工具。
  #./configure --enable-xcache --with-php-config=/application/php/bin/php-config
  # make
  # make install
  # ll /application/php5.5.38/lib/php/extensions/no-debug-non-zts-20121212/
  看看是否含有 xcache.so 表明 安装是否完成。
  安装数据库缓存及其它PHP扩展插件
  memcached缓存软件:mem内存 cache缓存。d 即daemon(服务器端进程模式服务)
  memcached分2部分:服务器端(memcached)和客户端(memcache)
  一般场景:数据存放在数据库中, web访问的时候,要不停的访问数据库。加入memcached好处:通过自身内存中缓存
  数据库的查询结果,减少数据库的访问次数,访问内存比访问硬盘效率要高。
  memcached的服务的工作步骤:
  1.先检查memcached服务的缓存中是否存在。如果存在直接返回请求数据
  2.memcached不存在数据,访问数据库
  3.数据库取出数据,返回给客户端
  4.同时把新取到的数据缓存一份给memcached服务缓存。备用。
  memcache 客户端PHP扩展插件(memcache2.2.7.tgz)
  # wget http://pecl.php.net/get/memcache-2.2.7.tgz
  # ./configure --enable-memcache --with-php-config=/application/php/bin/php-config
  # make
  # make install
  # ll /application/php5.5.38/lib/php/extensions/no-debug-non-zts-20121212/
  是否包含 memcache.so
  安装:PDO_MYSQL扩展模块
  下载地址:# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
  一般在编译PHP的时候以参数的形式加入此模块:--with-pdo-mysql=mysqlnd
  如果源码包编译安装和前面的安装无异(略步骤)
  平台分析如下:
  # ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql-mysql=/application/mysql
  安装图像处理程序及imagick 扩展模块
  安装图像软件:ImageMagick
  安装imagick模块
  # wget http://pecl.php.net/get/imagick-3.4.3.tgz
  # /application/php/bin/phpize
  # ./configure --with-php-config=/application/php/bin/php-config
  配置模块生效:修改php.ini文件。把加载模块的地址修改。
  extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts-20121212"
  extension=memcache.so
  extension=imagick.so
  配置XCache 插件加速
  1.首先修改 xcache 自带的配置文件  xcache.ini ,然后将修改的文件添加到 php.ini(引擎文件)文件的后面
  # grep -vE "^;|^$" /data/xcache-3.2.0/xcache.ini > xcache.ini.bak
  其中主要修改:一下参数
  xcache.size  =               256M
  xcache.count =                 2
  xcache.ttl   =                86400
  xcache.gc_interval =          3600
  xcache.var_size  =            64M
  

  **** xcache.size   非0表示启用缓存。后面的数值代表允许mmap(一种内存共享机制)的最大值
  xcache.count    官方推荐服务器CPU的个数   # grep -c processor /proc/cpuinfo(匹配CPU个数)
  xcache.ttl    ttl(time to live) 设定cache对象的生存期
  xcache.gc_interval      回收器扫描过期对象回收内存空间的时间间隔(如果设为0.则不回收,启动缓存必须开启回收)
  xcache.var_size        变量的缓存
  # cat xcache.ini.bak >> /application/php/lib/php.ini
  因为 XCache 使用共享内存作为存储空间,如果有必要可以调整共享内存大小参数。
  # tail /etc/sysctl.conf
  kernel.msgmnb = 65536
  

  # Controls the maximum size of a message, in bytes
  kernel.msgmax = 65536
  

  # Controls the maximum shared segment size, in bytes
  kernel.shmmax = 68719476736
  

  # Controls the maximum number of shared memory segments, in pages
  kernel.shmall = 4294967296
  2.重新启动PHP查看xcache加载情况
  # pkill php-fpm
  # /application/php/sbin/php-fpm
  # /application/php/bin/php -v
  PHP 5.5.38 (cli) (built: Feb  1 2017 22:43:58)
  Copyright (c) 1997-2015 The PHP Group
  Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
  with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
  with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
  3.配置web界面的查看xcache缓存加速信息。
  修改php.ini 文件中的
  xcache.admin.user = "mOo"    #把mOo 替换
  xcache.admin.pass = "md5 encrypted password"
  # 这里是利用md5算法生成加密串
  例如:
  # echo -n '123456' | md5sum
  e10adc3949ba59abbe56e057f20f883e  -
  将内容替换成e10adc3949ba59abbe56e057f20f883e

  引用xcache相关的页面;
  # cd /data/xcache-3.2.0
  # cp -a ./htdocs/ /application/nginx/html/blog/xadmin
  #  chown -R nginx.nginx /application/nginx/html/blog/xadmin
  # pkill php-fpm

  # /application/php/sbin/php-fpm
  

  下面附上 :压测效果对比:(昨天为没有加入xcache缓存的数据,右边为加入xcache缓存效果)





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651278-1-1.html 上篇帖子: php 学习笔记--数组篇(9) 下篇帖子: mac php 图片验证码无法显示问题,gd库没有freetype的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表