php优化(一)

PHP缓存加速介绍

1、

操作码介绍及缓存原理

当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存(Opcode cache)的原理就是讲编译后的操作码保存下来,冰岛共享内存里,以便在下一次调用该PHP页面时重用它,避免了相同代码的重复编译。节省了PHP引擎重复编译的时间,降低了服务器负载,同时减少了CPU和内存开销。加速性能可以达到2-10倍。

2、

PHP缓存加速软件介绍

为了提高PHP引擎的高并发访问及执行速度,产生了一系列PHP缓存及加速软件。这些软件设置的目的就是缓存PHP引擎解析过的操作码文件,以便在指定时间内有相同的PHP程序请求访问时,不再需要重复解析编译,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业 站的整体体验。

3、

Apache环境的PHP缓存加速器原理

在LAMP环境中,Apache服务是使用libphp5.so响应处理PHP程序请求的,整个流程如下:

1、Apache接收客户端的PHP程序请求并根据规则过滤。

2、Apache将PHP程序请求传递给PHP处理模块libphp5.so

3、PHP引擎定位磁盘上的PHP文件,并将其加载到内存中解析

4、PHP处理模块libphp5.so将PHP源代码编译成为opcode

5、PHP处理模块libphp5.so执行opcode,然后把opcode缓存起来

6、Apache接收客户端新的PHP程序请求,PHP引擎直接读取缓存执行opcode文件,并将结果返回。在这一次任务中,就无第4步的编译解析了,从而提升了PHP编译解析效率

LNMP环境PHP缓存加速器原理详解

在LNMP环境中,PHP引擎不再使用libphp5.so模块了,而是启动了独立的FCGI即php-fpm进程,由它监听来自nginx的PHP程序请求,并交给PHP引擎解析处理,整个执行流程大概如下:

1)Nginx接收客户端的PHP程序访问请求。

2)Nginx根据扩展名等过滤规则将PHP程序请求传递给解析PHP的FCGI进程(PHP-FPM)

3)PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。

4)PHP解析器将PHP程序编译为opcode文件,然后把opcode缓存起来。

5)PHP FPM引擎执行opcode树,返回数据给Nginx,进而返回客户端。

6)Nginx 接收客户新的PHP程序请求,PHP FPM引擎就会直接读取缓存中的opcode执行,将结果返回,该过程中无需第4步操作,从而提升了PHP编译解析效率。

  
提示:这里我们安装只是安装的客户端相当于一个插件,还需要配置服务端才可以生效


安装步骤:

PHP的Memcached扩展插件下载地址为:http://pecl.php.net/package/memcache

PHP的Memcached客户端扩展操作步骤:

安装过程

安装其他的PHP扩展插件模块

安装图像处理程序及imagick 扩展模块
1.安装ImageMagick图像软件

ImageMagick是一套功能强大、文档而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF,JPEG,GIF、PNG、PDF以及PhotoCD等。利用ImageMagick,你可以根据Web应用程序的需要动态生成图片,还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作。

ImageMagick的常见功能:

1、将图片从一个格式转换到另一个格式,包括直接转换图标。

2、可以改变图片尺寸。旋转、锐化(sharpen)、减色、设置图片特效。

3、对图片设置各种尺寸缩略图

4、将图片设置为可以适应于Web背景的透明图片

5、将一组图片作成gif动画,直接convert

6、将几张图片做成一张组合图片

7、在一个图片上写字或画图形,带文字阴影和边框渲染

8、给图片加边框或框架

9、取得一些图片的特性信息

它几乎包括了gimp可以实现的所有常规插件功能,甚至包括各种曲线参数的渲染功能。

ImageMagick下载    密码:nx7r

提示:ImageMagick只是插件需要的图像处理软件,安装ImageMagick不会生产.so,因为不是插件只是一个软件

2.安装imagick php扩展插件

  imagick插件工作需要ImageMagick软件的支持,所以,必须要先安装ImageMagick,否则会出现 错等一系列问题。

  imagick插件是一个可以供PHP调用ImageMagick功能的扩展模块。使用这个扩展可以使PHP具备和ImageMagick相同的功能。装了ImageMagick图像程序后,再装PHP的扩展imagick插件,才能使用ImageMagick提供的api来进行图片的创建与修改、压缩等操作。因为他们都集成在了imagick这个PHP扩展中。

  imagick-2.3.0.tgz版本太低了,不支持php5.5,需要ImageMagick-6.7.9-9.tar.xz的支持,因此,注意先后顺序。

imagick下载  密码:ise8

配置Memcached/pdo_mysql/imagick模块生效


1.修改PHP的配置文件php.ini

  可以在php.ini修改参数。也可以在后面直接添加。我们直接添加即可

提示:pdo_mysql在php5.5已经安装,如果此处 错。建议在配置文件删除pdo_mysql这个模块phpinfo会出现几个模块

 

 
解决方法:

1.制作软连接

2.或者将/usr/lib64放到/etc/ld.so.conf

配置eAccelerator插件生效并优化参数


1.配置eAccelerator缓存目录

2.配置eAccelerator参数

eaccelerator配置参数详解

eAccelerator参数 解释说明
[eaccelerator] 开始eAccelerator加速模块配置
extension=eaccelerator.so 加载eAccelerator加速模块,路径相当于extension_dir的配置
eaccelerator.shm_size=”64″ 存储缓存数据的共享内存大小,如果为0,则最大值看内核配置/proc/sys/kermel/shmmax。
eaccelerator.cache_dir=”/tmp/eaccelerator” 磁盘缓存存储路径,缓存内容为precompiled sode、session data、content和user entnes。默认路径为“/tmp/eacclerator”
eaccelerator.enable=”1″ eAccelerator缓存生效开关,1为默认,即生效。0为关闭,即不生效
eaccelerator.optimizer=”1″ 加速PHP代码执行速度,1为默认值表示激活,0为不激活。用于缓存前的代码加速。
eaccelerator.check_mtime=”1″ 检查缓存修改时间决定代码是否需要重新编译。1为激活,是默认值
eaccelerator.debug=”0″ 缓存加速调试。0为关闭,1为打开,打开后可以看到缓存命中信息。
eaccelerator.filter=”” 设置对象是否缓存规则,控表示不设定。
eaccelerator.shm_max=”0″ 可以被放置的缓存最大值,0是不限制
eaccelerator.shm_ttl=”3600″ 缓存文件的生存周期(单位秒)
eaccelerator.shm_prune_period=”3600″ 当共享空间不够时,从共享内存移除老数据的时间周期。
eaccelerator.shm_only=”0″ 是否允许缓存数据到磁盘,0为允许,但是对于session data and content caching无影响
eaccelerator.compress=”1″ 是否开启压缩,1为开启
eaccelerator.compress_level=”9″ 压缩级别,9为最高

php5.5 无法安装eAcelerator 所以我们无法查看。如果安装成功可以使用命令查看

出现eAccelerator版本信息为安装成功

phpinfo 可以看到如下信息

640x_fmt=jpeg&wxfrom=5&wx_lazy=1

 

3.使用tmpfs优化eAccelerator

  tmpfs是一种基于内存的文件系统,使用tmpfs作为数据临时存储通常比本地硬盘快很多,此方法适用于临时使用的各类缓存场景。例如:上传图片时很多软件默认在/tmp下临时缓存切图、存放session数据,则可以让/tmp使用tmpfs文件系统来加快访问效率。

操作如下:

提示:使用tmpfs可以将访问磁盘改为访问内存

案例:用户上传图片到nginx,nginx 会在/tmp/下面切割图片,导致磁盘IO偏高。

解决方案: 可以使用tmpfs 将内存作为临时硬盘进行设置。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8597 人正在系统学习中 相关资源:PPT中FLASH插入软件.rar-Flash文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年7月6日
下一篇 2016年7月6日

相关推荐