设为首页 收藏本站
查看: 924|回复: 0

[经验分享] linux安装apc服务加速php

[复制链接]

尚未签到

发表于 2018-12-20 10:33:59 | 显示全部楼层 |阅读模式
一、基础原理
1、APC全称为Alternative PHP Cache,是一个开放自由的PHP opcode 缓存。它的目标是提供一个自由、 开放,和健全的框架用于缓存和优化PHP的中间代码。

2、opcode为计算机指令中的一部分,先了解下运行机制
首先先从浏览器过来,
请求交给SAPI,随后SAPI层将控制权转给PHP,
其次zend_language_scanner对代码进行扫描,对php代码进行词法分析转换成一系列的tokens array,
zend_language_parser将上一步骤产生的一系列tokens处理掉空格等无用的代码以后转换成一系列表达式,
最后经过compiler阶段生成opcode返回zend_op_array指针。
其实,opcode就是将php编译为一系列指令来供计算机执行,而且php的底层就是用c来开发的。

3、apc是将产生的opcode进行缓存之内存或临时文件中。从而避免相同的程序再次编译以提高php运行速度。





二、APC使用方法
1、系统缓存
系统缓存是当你安装之后就开始了自行运行,并将php编译后产生的opcode缓存起来,当第二次调用时会对比你在php.ini中设置的超时时间是否过期,类似于memcache过期机制。而apc一般在使用上都只做本地cache这层。

2、用户缓存
由开发人员在开发php时用apc_store和apc_fetch函数操作读取、写入,但不支持分布式,而且apc本身最大的利用价值就在于加速php。如果用apc去缓存用户数据,还是推荐memcache。毕竟,涉及到缓存这层的架构已经不是小型网站了。而且memcache支持分布式,使用方便灵活。



3、apc监控
apc源码包自带了一个apc.php程序,用来监控系统、用户缓存和占用量数据。
(来源漫步游www.manbuyou.comapc统计数据)


(来源漫步游www.manbuyou.com系统缓存数据)




三、APC安装与配置
下载最新版本http://pecl.php.net/package/APC,目前最新版本为APC-3.1.13.tgz
1、下载安装
wget http://pecl.php.net/get/APC-3.1.13.tgz
tar -zxvf APC-3.1.13.tgz
/usr/local/php/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php/bin/php-config
make && make install



2、校验
1) make成功后会显示如下信息
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
Installing header files:         /usr/local/php/include/php/


2) 或查看是否安装成功,(安装后会默认生成apc.so文件在php扩展包中)
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/apc.so  (no-debug-non-zts-20100525 根据php版本变动,不一定是这个目录)


3) 或者查看phpinfo信息,是否有apc模块


3、修改php.ini文件
/* 增加apc配置至php配置文件中 */
vim /usr/local/php/etc/php.ini
shift+g #将光标移到文件底部


/* 粘贴到php.ini中 */
[apc]
extension=apc.so
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 64m
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 0
apc.write_lock = On



4、重启服务
killall php-fpm

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


5、如若想查看统计数据则把apc源码包中的apc.php cp 到你的网站目录  http://www.xxx.com/apc.php 访问


6、更新缓存
其中有这么一项:apc.stat=1/0
这个选项是否启用脚本更新检查。 改变这个指令值要非常小心。 默认值 On 表示APC在每次请求脚本时都检查脚本是否被更新, 如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。 如果设为 Off 则表示不进行检查,从而使性能得到大幅提高。 但是为了使更新的内容生效,你必须重启Web服务器(译者注:如果采用cgi/fcgi类似的,需重启cgi/fcgi进程)。 生产服务器上脚本文件很少更改, 可以通过禁用本选项获得显著的性能提升。

这个指令对于include/require的文件同样有效。但是需要注意的是, 如果你使用的是相对路径,APC就必须在每一次include/require时都进行检查以定位文件。 而使用绝对路径则可以跳过检查,所以鼓励你使用绝对路径进行include/require操作。



四、apc配置参数说明
[apc]
extension=apc.so
#加载apc扩展
apc.enabled = 1
#是否启用APC
apc.cache_by_default = on
#是否默认对所有文件启用缓冲。 若设为Off并与以加号开头的apc.filters指令一起用,则文件仅在匹配过滤器时才被缓存
apc.shm_segments = 1
#为编译器缓冲区分配的共享内存块数量(建议值为1)。
apc.shm_size = 64
每个共享内存块的大小(以MB为单位,建议值为128~256)。
apc.ttl = 7200
#缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~36000。设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。
apc.user_ttl = 7200
#类似于apc.ttl,只是针对每个用户而言,建议值为7200~36000。
apc.num_files_hint = 0
#Web服务器上可能被包含或被请求的不同源文件的大致数量(建议值为1024~4096)。如果你不能确定,则设为 0 ;此设定主要用于拥有数千个源文件的站点。
apc.write_lock = On
#是否启用写入锁。在非常繁忙的服务器上,无论是启动服务还是修改文件,都可能由于多个进程企图同时缓存一个文件而导致竞争条件启用该指令可以避免竞争条件的出现。




  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653509-1-1.html 上篇帖子: php开启zip扩展 下篇帖子: 动态编译php的gd库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表