php服务缓存加速

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缓存效果)

时间: 2024-10-12 14:40:59

php服务缓存加速的相关文章

PHP服务缓存加速优化实战

PHP服务缓存加速优化实战: (1)操作码介绍及缓存原理: 当客户端请求一个PHP程序的时候,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code)文件. 该文件是执行PHP代码后的一种二进制表示形式. 默认情况下,这个编译好的操作码文件由PHP引擎执行后进行丢弃. 操作码文件缓存机制就是将编译还的文件保存下来,并放到共享内存中,以便于下一次调用该PHP页面的时候重用它,避免了相同的代码重复度,节省了PHP引擎重复编译的时间. 降低了服务器负载,同时减少了服务

PHP服务缓存加速——xcache的安装与配置

1.PHP缓存加速器介绍 (1)操作码的介绍和加速器的原理 当客户请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code,简称opcode文件),该文件是执行PHP代码后的一种二进制的表示形式.默认情况下,这个编译好的的操作码文件由PHP引擎执行后丢弃.而操作码缓存(opcode cache)的原理就是将编译后的操作码报错下来,并放到共享内存里,以便在下次调用PHP页面时重用它,它避免了相同代码的重复编译,节省了PHP引擎重复编译的时间,降

PHP服务缓存优化之ZendOpcache、xcache、eAccelerator

PHP服务缓存优化原理 Nginx 根据扩展名或者过滤规则将PHP程序请求传递给解析PHP的FCGI,也就是php-fpm进程 缓存操作码(opcode) Opcode,PHP编译后的中间文件,缓存给用户访问 当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件,该文件是执行PHP代码后的一种二进制文件表现形式.默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃:而操作码缓存的原理就是将编译后的操作码保存下来,并放入到共享内存里,以便再下一次调用

varnish的缓存加速,以及动静分离,负载均衡

一个简单的拓扑如上,varnish1 上还同时开了nginx,用来做静态的http,app1和app2 是nginx+fastcgi,这个拓扑主要做的是Discuz!论坛的动静分离,以及app的负载均衡,varnish起到个反向代理和缓存加速的功能. varnish1:192.168.1.151,172.16.0.51 app1:172.16.0.52 app3:172.16.0.54 varnish 简介 varnish的缓存方式: 1.malloc,通过malloc获取内存,简单,速度. 2

CDN加速和缓存加速有什么区别

缓存加速是个产品或系统,简称Cache产品,通过侦测用户的请求提取热门资源,然后下载并缓存到本地,为后续的用户提供加速服务,产品目标对象是ISP. CDN适合各种中小企业,凭借着不通的网络节点为网站提供高效稳定的CDN加速服务. 用户下载或打开网站时,自动为终端用户连接到最近最安全的节点,一旦发现节点堵塞,立即切换下一个节点继续加载,减少节点堵塞现象. 打个比方,周末去春游,头天晚上准备好所有行李,第二天一早直接出发,就是CDN.出游当天早上慌忙准备,可能会遗漏什么,就是缓存加速. 转载于江苏三

WDCP,LNMP安装PHP缓存加速扩展eAccelerator,xcache和memcached

VPS主机性能配置如果太差,则在运行Wordpress博客和Discuz! 论坛等高消耗程序时能够明显感觉出VPS有些吃力.另外,即使VPS主机的CPU.内存.硬盘I/O等性能足够好,但是在面对大流量时则有可能导致PHP执行效率降低,网页打开速度变慢等不正常的情况. 为了能够在低配置的VPS主机上Web也能跑出流畅的感觉和在面对流量高峰时服务器也能从容应对大量的应该访问请求,我们一般会给PHP安装上几点缓存加速扩展:eAccelerator,xcache和memcached,优化动态内容缓存,提

Nginx代理缓存加速服务器

Nginx缓存概述 提供与Squid类似的缓存,把URL以及相关信息当成key,用MD5编码哈希后,把数据文件保存在硬盘上,并且只能为指定的URL或者状态码设置过期时间,并不支持类似 squid的purge命令来手动清除指定缓存页面,但是可以通过第三方的ngx_cache_purge来清除指定的URL缓存Nginx的缓存加速功能是由proxy_cache(用于反向代理和静态缓存)和fastcgi_cache(PHP动态缓存)两个功能模块完成 1.proxy_cache原理 2.Nginx缓存特点

Nginx缓存加速

一.Nginx缓存概述 提供与Squid类似的缓存,把URL以及相关信息当成key,用MD5编码哈希后,把数据文件保存在硬盘上,并且只能为指定的URL或者状态码设置过期时间,并不支持类似 squid的purge命令来手动清除指定缓存页面,但是可以通过第三方的ngx_cache_purge来清除指定的URL缓存 Nginx的缓存加速功能是由proxy_cache(用于反向代理和静态缓存)和fastcgi_cache(PHP动态缓存)两个功能模块完成 1.proxy_cache原理 2.Nginx缓

秒开缓存加速系统 不需多花钱就能更快

网络技术的发展不是这一两年的事情,但是伴随着网络技术的应用越来越多的人开始了自己的网络学习办公.娱乐生活,而且,不难发现,随着互联网的不断发展,现在网络上的高清视频.影片下载.音乐下载.移动软件应用也越来越丰富,特别是最近火爆的网络视频的成为潮流,但是负面影响就是网络流量增长导致对出口形成很大压力. 对于技术控来讲,面对这种情况一般不会觉得很有压力,因为他们的传统的做法一般有两种:其中一是增加宽带,第二就是通过路由限速.但其实这两种方法都不是最理想解决办法.为什么呢?因为如果增加带宽就增加了自己