PHP服务缓存加速软件

前言

环境:CentOS7.9 php-7.4.16.tar.gz (默认已经安装好PHP,安装路径位于/usr/local/php/)

什么是PHP缓存加速软件

为什么需要缓存插件?我们知道,当客户端请求一个php程序时,服务端的php引擎解析该php程序,并将其编译为特定的操作码文件(operate code,简称opcode),opcode文件是执行php代码后的一种二进制表示形式文件,默认情况下,opcode文件由php引擎执行后就会被丢弃,下一次,同样的PHP请求,PHP引擎还会再次编译生成opcode文件,这就很浪费CPU和内存资源了,特别是在高并发的场景下。那么有没有改变这种情况的方法呢,答案是有,那就是PHP缓存加速软件,也称作为缓存加速器,其原理就是:缓存前面提到的PHP引擎解析过的操作码文件opcode,以便在指定时间内有相同的PHP程序请求访问时,不再需要重复解析编译,直接调用缓存中的PHP操作码文件opcode,这样就能提高整个web服务的处理速度,从而提升用户访问网站的整体体验。

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

下面介绍Apache环境下PHP缓存加速器原理,在lamp环境中,Apache服务是使用libphp5.so响应处理PHP程序请求的,整个流程大概如下:
1、Apache接受客户端的PHP程序请求,并根据规则过滤之;
2、apache讲请求传递给PHP处理模块libphp5.so;
3、PHP引擎定位磁盘上的PHP程序文件,并将其加载到内存中进行解析;
4、PHP处理模块libphp.so讲php文件源代码编译成opcode;
5、PHP处理模块libphp.so执行opcode,然后讲opcode缓存起来;
6、Apache接受新的同样的PHP请求,PHP引擎直接读取缓存执行opcode文件并将结果返回。
PHP缓存加速器解决的是第4步,默认情况下PHP执行完opcode就会把opcode丢弃掉,而通过缓存加速器就把opcode保存了下来,目的是当有新的相同的请求时不需要重新编译,直接执行opcode,减少编译时间和系统资源,直接提高了效率。

LNMP环境PHP缓存加速器原理

在nginx环境中,PHP引擎采用了独立的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 fpm直接读取缓存中的opcode执行并返回,无需再次编译;

PHP缓存加速器的种类

PHP常见的缓存加速器软件有eAccelerator、XCache、APC(Alternative PHP Cache)、ZendOpcache,以上几种缓存加速器任选一种即可,为了学习,本文会讲如何安装XCache、eAccelerator、ZendOpcache;将由于针对的是PHP,所以安装PHP缓存加速软件与LAMP、LNMP结构无关,简单的说不管架构是Apache还是Nginx,安装PHP缓存加速器都是相同的,下面就来将一下如何安装这些加速器。

安装依赖

配置环境变量是为了防止下面安装过程中软件出现报错;

echo "export LC_ALL=C" >>/ etc/porfile
yum install perl-devel 

安装PHP eAccelerator缓存加速模块

cd ~
wget http:xxx
tar zxvf  eaccelerator-0.9.6.1.tar.gz
cd eaccelerator-0.9.6.1
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install

说明:要进入到eaccelerator-0.9.6.1再执行命令/usr/local/php/bin/phpize,至于什么是phpize,本文末尾会将,–with-php-config是PHP的安装地址,安装成功后在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913下就会有eaccelerator.so模块了说明安装成功。

安装PHP XCache缓存加速模块

cd ~
wget http:xxx
tar zxvf  xcache-3.2.0.tar.gz
cd xcache-3.2.0
/usr/local/php/bin/phpize
./configure --enable-xcache=shared --with-php-config=/usr/local/php/bin/php-config
make
make install

说明:安装成功后在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913下就会有xcache.so模块了说明安装成功。

安装PHP ZendOpcache缓存加速模块

ZendOpcache的安装有两种方式,一种是在php5.5以上版本可以在安装时直接指定参数 --enable-opcache,另一种也可以源码编译安装;

cd ~
wget http:xxx
tar zxvf  zendopcache-7.0.5.tar.gz
cd zendopcache-3.2.0
/usr/local/php/bin/phpize
./configure --enable-opcache=shared --with-php-config=/usr/local/php/bin/php-config
make
make install

说明:安装成功后在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913下就会有opcache.so模块了说明安装成功。

安装数据库缓存软件Memcached扩展插件

memcached是一款高性能高并发的内存缓存软件,它分为客户端和服务端,在传统场景下,多数web应用都将数据保存到关系型数据库中,随着业务的增大和访问集中,RDBS就会出现负担加重,响应延时等一系列问题,memcached服务一般用来保存网站中经常被读取的对象或数据,就是我们的客户端浏览器把经常访问的网页缓存起来一样,通过内存缓存来存取对象或数据要比磁盘存取快很多。

memcached的工作步骤如下:
1、程序首先检查客户端请求的数据在mencached服务的缓存是否存在,如果存在直接把请求的数据返回,不再请求数据库;
2、如果请求的数据在memcached中不存在,则程序回去mencached后端的数据库获取;
3、从数据库中获取到信息返回给客户端;
4、同时把新取到的数据库的数据缓存一份到memcached服务缓存中,下次同样的请求就直接从memcached服务缓存中返回数据,从而减轻数据库的访问压力。

前面提到过memcached分为客户端和服务端,下面是mencached客户端php的扩展插件在php环境中的安装,用于访问memcached服务器端数据。

cd ~
wget xxxxx. memcached-2.2.7. tar.gz
tar -xvzf memcached-2.2.7. tar.gz
cd memcached-2.2.7
/usr/local/ php/ bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install

说明:安装成功后在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913下就会有memcache.so模块了说明安装成功。

pdo_MySQL扩展模块的安装

PDO扩展为php访问数据库定义了一个轻量级一致性的接口,它提供了一个数据访问抽象层,这样无论使用什么数据库,都可以通过一致的函数执行查询并获取数据。PDO_MySQL的安装有两种方式,一种是编译php时加入PDO_MySQL的支持,即添加参数–with-pdo-mysqlnd
,另外一种是源码编译安装。

cd ~
wget xxx. pdo-mysql-1.0.2. tar.gz
tar pdo-mysql-1.0.2. tar.gz
cd pdo-mysql-1.0.2
/usr/local/ php/ bin/phpize
./configure  --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql

安装ImageMagick图像软件

ImageMagick是一套功能强大稳定而且免费的工具集和开发包,可以用来读写处理超过90种基本格式的图片文件,ImageMagick是一款单独的软件,不是php的扩展,因为其很好用而且支持很多种格式的图片文件,所以广泛用于PHP环境中,下面来安装ImageMagick。

cd ~
wget  http://ImageMagick-6.7.9. tar.gz
tar -zxvf ImageMagick-6.7.9. tar.gz
cd ImageMagick-6.7.9
./configure 
make
make install

安装imageick PHP扩展插件

imageick插件是一款能让php调用ImageMagick软件功能的扩展模块,一般的你先要安装好ImageMagick软件后再安装imageick插件,才能使用ImageMagick提供的api进行图片的各种处理,因为它们都集成在imageick这个php控制里面了。

cd ~ 
wget  xxx.imageick-2.3.0. tzr.gz
tar -zxvf imageick-2.3.0. tzr.gz
cd imageick-2.3.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make 
make install

说明:安装成功后在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913下就会有imageick.so模块了说明安装成功。

配置memcached,imagick生效

前面我们安装了memcached和imagick,在/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913目录下都生成了对于模块,现在我们来配置PHP引擎,让PHP能识别并使用这些模块:

vim /usr/local/php/lib/php.ini
找到extension_dir=参数,路径写/usr/local/php/lib/php/extensions/no-debug-non-zts-20200913即可。然后新增如下几行:
extension=memcached.so
extension=imagick.so
extension=pdo-mysql.so

这时启动Nginx,和php,编辑测试文件phpinfo,网页访问,按Ctrl+F搜索网页,看看有没有memcached,pdo-mysql,imagick,有就说明配置已经生效了。

配置eAccelerator插件生效并优化

创建eAccelerator缓存目录

mkdir -p /tmp/eaccelerator
chown -R nginx. nginx /tmp/eaccelerator
vim /usr/local/php/lib/php.ini
添加一下eaccelerator参数:
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1”
eaccelerator.check_mtime="1"
eaccelerator.debug="0”
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator compress="1"
eaccelerator.compress_level="9"

查看配置是否生效,启动php-fpm

/usr/local/php/sbin/php-fpm

通过phpinfo网页检查是否生效,同时查看缓存目录/tmp/eaccelerator是否有文件

配置XCache插件加速生效

解压的目录里有个xcache. ini文件,这是xcache的配置文件,我们可以直接用这个文件,如下配置:

cat ~/xcache-3.2.0/xcache. ini >>/ usr/local/php/lib/php.ini

然后重启php-fpm,查看phpinfo网页。

配置web页面查看xcache缓存加速信息

我们可以通过配置xcache网页来查看xcache信息,如下配置:

echo -n "123456" |md5sum
生成一层密码密文,复制改段密文
vim /usr/local/php/lib/php.ini
修改对应的如下信息:
xcache. admin. enable_auth=on
xcache. admin.user=" nginx"
xcache. admin.pass="粘贴密文"

复制xcache软件下的php程序到站点目录下,然后进行访问即可。

配置 ZendOpcache 加速器生效

在php.ini 的最后面加入下面几行:

[opcache]
2oo90626/opcache.so
zend_extension=/usr/local/php/extensions/no-debug-non-zts-20200613/opcache.so
;extension=opcache.so
opcache.memory_consumption=32
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=1000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

然后重启php-fpm,通过phpinfo查看是否生效

补充知识: phpize 是什么

安装 PHP 扩展插件的时候,常常有这样一条命令:/application/php/bin/phpize,可能有人会问 phpize 有什么用?事实上,phpize 是用来扩展 PHP 扩展模块的,通过 phpize 可以建立 PHP 的外挂模块。比如想在原来编译好的 PHP 中加入 Memeached 等扩展模块,可以使用 phpize 工具。
PHP 的官方说明地址为 http://php.net/manual/en/install.pecl.phpize.php。
那么,要如何使用 phpize 呢?
编译 PHP 后,其 bin 目录下会有 phpize 这个脚本文件。在编译扩展插件时,即在执行 configuze 前执行这个命令/application/php/bin/phpize即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值