美文网首页
PHP 缓存加速模块简介(xcache eaccelerato

PHP 缓存加速模块简介(xcache eaccelerato

作者: DB哥 | 来源:发表于2019-09-29 08:36 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:PHP 缓存加速模块简介(xcache eaccelerato

          本文链接:https://www.haomeiwen.com/subject/jeyvuctx.html