PHP 缓存加速模块简介(xcache eaccelerator memcache imagick pdo_mysql)

Linux系统环境

[root@lnmp ~]#  cat /etc/redhat-release                      #==》系统版本
CentOS release 6.7 (Final)
[root@lnmp ~]#uname –r                                       #==》内核版本
2.6.32-573.el6.x86_64
[root@lnmp ~]#uname -m                                      #==》系统架构
x86_64
[root@lnmp ~]#echo $LANG                                    #==》系统字符集
en_US.UTF-8
[root@lnmp ~]# mysql -uroot -p123456                        #==》mysql版本
Server version: 5.5.32 MySQL Community Server (GPL)
[root@lnmp ~]# /application/nginx/sbin/nginx -v             #==》nginx版本
nginx version: nginx/1.16.0
[root@lnmp ~]# /application/php/bin/php –v                   #==》PHP版本
PHP 5.3.27 (cli) (built: Jul 9 2019 14:54:53)
[root@lnmp ~]# ip a | awk -F "[ /]+" 'NR==8{print $3}'      #==》IP地址
10.0.0.8

PHP****缓存加速器介绍

1、操作码缓存介绍

请求一个PHP程序时,PHP引擎会解析该程序,并将其编译为特定操作码,这是要执行的代码的一种二进制表示形式,随后,此操作码由PHP引擎执行并丢弃。操作码缓存将保存这个编译后的操作码,并在下一次调用该页面时重用它。这会节省很多重复编译的时间。

为了提高PIHP引擎的执行效率,PHP缓存加速器设计的目的是缓存PHP解析过的操作码,这样同样的请求访问过来,PHP引擎就不需要解析转换了,可以直接调用PHP的操作码,这样就提高了web服务的响应速度,从而提升了用户的访问体验。

PHP缓存加速器将内容进行缓存,目的是防止PHP每次请求都重复编译解析PHP程序代码,因为在高访问量的网站上,大量的重复编译会消耗很多资源和事件,所以这里面的瓶颈就是PHP的重复编译既影响了响应速度,又加重了服务器的负载,为了解决此问题,PHP加速器就这样诞生了。

PHP缓存加速器软件种类

1、xchache 推荐使用(更快,版本一直持续更新,社区开发活跃)

2、eaccelerator

3、Zend

4、apc

Phpize是什么?

1、安装php(fastcgi模式)扩展模块的时候,都要在扩展模块软件目录下执行一名这样的命令:/application/php/bin/phpize(php已经编译完成安装的程序目录)

2、PHP官方解释phpize作用 https://www.php.net/manual/en/install.pecl.phpize.php#59344

3、phpize是用来扩展php扩展模块使用命令,通过phpize可以建立php的外挂模块。例如:在已经编译使用中的php环境中想加入xcache等扩展模块,可以使用phpize命令手动添加外挂模块。

一、Lnmp基本web环境准备

在安装php扩展及缓存加速模块之前,需要安装好lnmp的基本环境,保证lnmp服务访问PHP能出现phpinfo的介面信息确认PHP正常,同时编写一个调用数据库的程序mysql_test.php进行测试,确认MySQL数据库正常。系统版本及软件版本如下所示:

提示:如果与上述版本对不上,在安装PHP的扩展及缓存加速模块可能会遇到其它问题。

  软件                                  版本
  Linux                                CentOS 6.7
  Nginx                                1.60.0
  MySQL                                5.5.32_64bit
  PHP                                  5.3.27

二、查看Nginx/MySQL/PHP历史编译的信息

1、[root@lnmp ~]# /application/nginx/sbin/nginx –V #==》查看Nginx历史编译信息

nginx version: nginx/1.16.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_module --with-http_ssl_module**

2、[root@lnmp ~]# grep CONFIGURE_LINE /application/mysql/bin/mysqlbug #==》查看MySQL历史编译信息M,因为本机MySQL是采用MySQL二进制安装包进行安装,所以没有历史编译信息

CONFIGURE_LINE=""
`test -n "$CONFIGURE_LINE" && echo "Configure command: $CONFIGURE_LINE"`

3、[root@lnmp ~]# /application/php/bin/php -i | grep configure #==》查看PHP历史编译信息

Configure Command => './configure' '--prefix=/application/php5.3.27' '--with-mysql=/application/mysql' '--with-iconv-dir=/usr/local/libiconv' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-safe-mode' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--with-curlwrappers' '--enable-mbregex' '--enable-fpm' '--enable-mbstring' '--with-mcrypt' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--enable-short-tags' '--enable-zend-multibyte' '--enable-static' '--with-xsl' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--enable-ftp'

PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in Unknown on line 0

二、安装eaccelerator缓存加速模块(功能与xcache相同,php性能优化)

eaccelerator 缓特加速模块说明:(官网地址:http://eaccelerator.net/

eaccelerator是一个自由的开放源代码的php加速、优化和动态内容缓存的扩展模块,它可以提升php程序的缓存性能,降低PHP程序在解析时对服务器的性能开销。eaccelerator还有对PHP优化的作用,加快其执行效率。使PHP程序代码执效率能提高1-10倍;eAccelerator的前身其实是truck-mmcache,因为开发truk-mmcache的人被Zend给招安了,所以开发eAccelerator的人继承了truk-mmcache的一些特性,设计出eAccelerator加速器。

无论如何在系统上安装eaccelerator,都有一些配置选项需要注意,配置文件通常是

/etc/php.d/eaccelerator.ini。eaccelerator.shm_size定义共享高速缓存的大小,编译后的脚本就存储在这里。该值的单位是兆字节(MB)。根据您的应用程序确定恰当的大小。

注意事项:

(1)、eaccelerator-0.9.5.2.tar.gz 适合PHP5.3以前的版本(不包括PHP5.3版本)
(2)、eaccelerator-0.9.6.tar.gz 适合PHP5.3版本
[root@lnmp tools]# mkdir -p /home/oldboy/tools
[root@lnmp tools]# cd /home/oldboy/tools
[root@lnmp tools]# wget [https://sourceforge.net/projects/eaccelerator/files/latest/download](https://sourceforge.net/projects/eaccelerator/files/latest/download)   #==》这个下载的是软件包集合,包含了xcahe/eaccelerator/memcache/imagick软件包
[root@lnmp tools]# unzip nginx-php-ext-soft.zip
Archive: nginx-php-ext-soft.zip
 creating: nginx-php-ext-soft/
 inflating: nginx-php-ext-soft/eaccelerator-0.9.6.tar.bz2
 inflating: nginx-php-ext-soft/ImageMagick.tar.gz
 inflating: nginx-php-ext-soft/imagick-2.3.0.tgz
 inflating: nginx-php-ext-soft/memcache-2.2.5.tgz
 extracting: nginx-php-ext-soft/PDO_MYSQL-1.0.2.tgz 
 inflating: nginx-php-ext-soft/xcache-1.3.2.tar.bz2
[root@lnmp tools]# ls
nginx-php-ext-soft nginx-php-ext-soft.zip
[root@lnmp tools]# cd nginx-php-ext-soft
[root@lnmp nginx-php-ext-soft]# ls
ImageMagick.tar.gz PDO_MYSQL-1.0.2.tgz eaccelerator-0.9.6.tar.bz2 imagick-2.3.0.tgz memcache-2.2.5.tgz xcache-1.3.2.tar.bz2
[root@lnmp nginx-php-ext-soft]# mv ./* ../
[root@lnmp tools]# ls
ImageMagick.tar.gz eaccelerator-0.9.6.tar.bz2 memcache-2.2.5.tgz xcache-1.3.2.tar.bz2
PDO_MYSQL-1.0.2.tgz imagick-2.3.0.tgz nginx-php-ext-soft.zip
[root@lnmp tools]# tar xf eaccelerator-0.9.6.tar.bz2
[root@lnmp tools]# cd eaccelerator-0.9.6

[root@lnmp eaccelerator-0.9.6]# /application/php/bin/phpize  #==》编译安装PHP扩展模块之前,都必须在扩展模块安装包目录下先执行此命令,不然安装会失败
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp eaccelerator-0.9.6]# ./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config
[root@lnmp eaccelerator-0.9.6]# echo $?
0
[root@lnmp eaccelerator-0.9.6]# make
[root@lnmp eaccelerator-0.9.6]# echo $?
0

#==》编译安装成功会显示eaccelerator扩展模块在PHP扩展模块目录下产生一个模块名称加.so结尾的文件
[root@lnmp eaccelerator-0.9.6]# make install 
Installing shared extensions:     /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/ #==》lamp和lnmp这个存放扩展模块的路径是不相同的
 [root@lnmp eaccelerator-0.9.6]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so

三、安装xcache缓存加速模块(功能与eaccelerator相同,php性能优化)

xcache 缓存加密模块说明:(官网地址:https://xcache.lighttpd.net/ )

xcache是一个又快又稳定的PHP opcode缓存器。经过良好的测试并在大流量/高负载的生产机器上稳定运行,经过在linux上测试并支持所有现行PHP分支的最新发布版本,如PHP4_3 PHP4_4 PHP5_0 PHP5_1 PHP5_2等,并支持线程安全/Windows.与同类opcode缓存器相比更胜一筹,比如能够快速跟进PHP版本。.

xcahce的2个特点

(1)、将PHP代码进行编译(表现类似于.NET和JAVA的编译,内部机制不同),这样可以不用重复读取PHP文件,加速整个程序的运行效率;

(2)、可以缓存数据到内存中,直接可以用,例如你的一些不会经常改动的数据,只用一次从数据库读取出来后保存到xcache中,就不用再去读取数据库了(理想环境下)。.

[root@lnmp tools]# tar xf xcache-1.3.2.tar.bz2
[root@lnmp tools]# cd xcache-1.3.2
[root@lnmp xcache-1.3.2]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp xcache-1.3.2]# ./configure --enable-xcahe --with-php-config=/application/php/bin/php-config
[root@lnmp xcache-1.3.2]# echo $?
0
[root@lnmp xcache-1.3.2]# make
[root@lnmp xcache-1.3.2]# echo $?
0
[root@lnmp xcache-1.3.2]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp xcache-1.3.2]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so xcache.so

四、安装memcache数据库缓存扩展模块 (数据库优化)

memcache 缓存软件说明:(官网地址 http://memcached.org/

memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

Memcache分为服务端软件和客户端插件两部分:

服务端软件名称memcached-1.4.3.tar.g2

客户端插件memcache-2.2.5.tgz(本教程使用的是客户端插件在php服务中的安装)
[root@lnmp tools]# tar xf memcache-2.2.5.tgz
[root@lnmp tools]# cd memcache-2.2.5
[root@lnmp memcache-2.2.5]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp memcache-2.2.5]# ./configure --with-php-config=/application/php/bin/php-config
[root@lnmp memcache-2.2.5]# echo $?
0
[root@lnmp memcache-2.2.5]# make
[root@lnmp memcache-2.2.5]# echo $?
0
[root@lnmp memcache-2.2.5]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp memcache-2.2.5]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so memcache.so  xcache.so

五、安装PDO_MYSQL扩展模块(可选择安装)

PDO_MYSOL扩展插件说明:

PDO_MYSOL扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询并获取数据。

[root@lnmp tools]# tar xf PDO_MYSQL-1.0.2.tgz
[root@lnmp tools]# cd PDO_MYSQL-1.0.2
[root@lnmp PDO_MYSQL-1.0.2]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:104: the top level
config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:104: the top level
[root@lnmp PDO_MYSQL-1.0.2]# ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
[root@lnmp PDO_MYSQL-1.0.2]# echo $?
0
[root@lnmp PDO_MYSQL-1.0.2]# make
[root@lnmp PDO_MYSQL-1.0.2]# echo $?  
0
[root@lnmp PDO_MYSQL-1.0.2]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp PDO_MYSQL-1.0.2]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so memcache.so pdo_mysql.so xcache.so

六、安装ImageMagick图像软件和imagick.php扩展模块

特殊注意:必须先安装安装ImageMagick图像软件再安装imagick.php扩展模块

1、ImageMagick图像软件说明:

(官网地址 http://www.imagemagick.org/script/download.php

ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片,还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby 编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG.现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。功能如下所示:

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

(2)、改变尺寸、旋转、锐化(sharpen)、减色、图片特效3.缩略图片的合成图

(3)、适于web的背景透明的图片

(4)、将一组图片作成gif动画,直接convert

(5)、将几张图片作成一张组合图片,montage

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

ImageMagick图像软件安装前注意事项:

(1)、安装这个ImageMagick软件为了是后面安装imagick.php扩展模块直接调用ImageMagick软件,必须先安装ImageMagick软件,否则安装imagick.php扩展模块会提示报错。

(2)、安装ImageMagick软件前必需安装perl相关软件,否则在执行make会提示如下报错。

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 24.
BEGIN failed--compilation aborted at Makefile.PL line 24.
make[1]: *** [PerlMagick/Makefile] Error 2
make[1]: Leaving directory `/home/oldboy/tools/ImageMagick-6.5.1-2'
make: *** [all] Error 2
[root@lnmp tools]# tar xf ImageMagick.tar.gz
[root@lnmp tools]# cd ImageMagick-6.5.1-2/
[root@lnmp ImageMagick-6.5.1-2]# yum -y install perl-devel
[root@lnmp ImageMagick-6.5.1-2]# ./configure
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0
[root@lnmp ImageMagick-6.5.1-2]# make
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0
[root@lnmp ImageMagick-6.5.1-2]# make install
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0

2、imagick.php扩展模块说明:

(下载地址 http://pecl.php.net/package/imagick

特别提示:imagick插件工作需要ImageMagick软件的支持,所以,必须要先安装ImageMagick,否则会报错

一个可以供PHP调用lImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能。

装了ImageMagick-6.5.1-2图像程序后,再装php的扩展imagick插件,才能使用ImageMagick-6.5.1-2提供的api来进行图片的创建与修改、压缩等操作,都集成在imagick这个扩展中。

[root@lnmp tools]# tar xf imagick-2.3.0.tgz
[root@lnmp tools]# cd imagick-2.3.0
[root@lnmp imagick-2.3.0]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp imagick-2.3.0]# ./configure --with-php-config=/application/php/bin/php-config
[root@lnmp imagick-2.3.0]# echo $?
0
[root@lnmp imagick-2.3.0]# make
[root@lnmp imagick-2.3.0]# echo $?
0
[root@lnmp imagick-2.3.0]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp imagick-2.3.0]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so imagick.so memcache.so pdo_mysql.so xcac a5
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容