APC缓存划分的两部分是什么,如何对APC模块安装
Admin 2022-08-16 群英技术资讯 882 次浏览
这篇文章主要讲解了“APC缓存划分的两部分是什么,如何对APC模块安装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“APC缓存划分的两部分是什么,如何对APC模块安装”吧!APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。
| apc.cache_by_default | 默认启用缓存。1表示“启用”,0表示“禁用” |
| apc.filters | 根据逗号分隔的POSIX正则表达式判断文件需要缓存还是不需要缓存。以a+开头的正则 表达式将强制APC不缓存与此正则表达式匹配的任何文件。以a-开头的正则表达式将强制 APC缓存与此正则表达式匹配的任何文件 |
| apc.stat | 启用或禁用APC对于所有请求PHP脚本是否有更改的检查。每次调用脚本时均会执行此 过程。如果禁用该设置,在对PHP脚本进行任意更改后均需要重新启动WEB服务器以 清除缓存并更改脚本内容。0=禁用,1=启用,默认1 |
| apc.enabled | 启用或禁用APC缓存。0=禁用,1=启用,默认1 |
| apc.shm_size | 设置APC允许使用的共享内存大小,此值以兆字节为单位 |
| apc.shm_segments | 设置可用的共享内存段总数 |
| apc.include_once_override | 启用或禁用include_once和require_once的优化。启用该设置时,可减少PHP内部函数进行的额外系统调用。0=禁用,1=启用,默认0 |
| apc.optimization | 设置优化级别。0=禁用优化功能 |
| apc.num_files_hint | 设置你认为需要缓存的文件数。默认值1000,如果不确定文件数,可以设置0 |
| apc.ttl | 设置文件存储在缓存中的过期时间,以秒为单位。 |
| apc.write_lock | 开启该设置将强制单个进程缓存特定的脚步。适用于必须缓存多个文件的大流量WEB服务器或应用程序 |
不管是用户缓存还是系统缓存,大体的执行过程类似,步骤如下:
第一步:下载php_apc.dll 在http://pecl.php.net/package/apc 要与php版本对应 将php_apc.dll放入你的ext目录
第二步:让php.ini支持apc扩展模块。 然后打开php.ini 加入:
extension=php_apc.dll
apc.rfc1867 = on
apc.max_file_size = 100M
upload_max_filesize = 100M
post_max_size = 100M
//以上参数可自己定义
第三步:检查是否支持PHP APC apc_store apc_fetch PHP APC 配置参数 把相关的配置放在一起解释。
apc.enabled=1 apc.enabled默认值是1,你可设成0禁用APC。如果你设置为0的时候,同样把extension=apc.so也注释掉(这样可以节约内存资源)。一旦启用了APC功能,则会缓存Opcodes到共享内存。
apc.shm_segments = 1
总结 1,使用Spinlocks锁机制,能够达到最佳性能。
2,APC提供了apc.php,用于监控与管理APC缓存。不要忘记修改管理员名和密码
3,APC默认通过mmap匿名映射创建共享内存,缓存对象都存放在这块”大型”的内存空间。由APC自行管理该共享内存
4,我们需要通过统计调整apc.shm_size、apc.num_files_hints、apc.user_entries_hint的值。直到最佳
5,好吧,我承认apc.stat = 0 可以获得更佳的性能。要我做什么都可以接受.
6,PHP预定义常量,可以使用apc_define_constants()函数。不过据APC开发者介绍说pecl hidef性能更佳,抛异define吧,它是低效的。
7,函数apc_store(),对于系统设置等PHP变量,生命周期是整个应用(从httpd守护进程直到httpd守护进程关闭),使用APC比Memcached会更好。必竟不要经过网络传输协议tcp。
8,APC不适于通过函数apc_store()缓存频繁变更的用户数据,会出现一些奇异现象。
wget http://pecl.php.net/get/APC-3.1.8.tgz
tar -zxvf APC-3.1.8.tgz cd APC-3.1.8
/usr/local/php/bin/phpize
./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/php/bin/php-config
make
sudo make install
在/usr/local/php/etc/php.ini 加入
extension = "apc.so" ;
;APC setting
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = on
重启apache 或者 /usr/local/php/sbin/php-fpm restart
查看phpinfo apc
下面引用www.initphp.com 框架的APC缓存类<?php
if (!defined('IS_INITPHP')) exit('Access Denied!');
/*********************************************************************************
* InitPHP 2.0 国产PHP开发框架 Dao-APC缓存 不适合频繁写入的缓存数据
*-------------------------------------------------------------------------------
* 版权所有: CopyRight By initphp.com
* 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
*-------------------------------------------------------------------------------
* $Author:zhuli
* $Dtime:2011-10-09
***********************************************************************************/
class apcInit {
/**
* Apc缓存-设置缓存
* 设置缓存key,value和缓存时间
* @param string $key KEY值
* @param string $value 值
* @param string $time 缓存时间
*/
public function set_cache($key, $value, $time = 0) {
if ($time == 0) $time = null; //null情况下永久缓存
return apc_store($key, $value, $time);;
}
/**
* Apc缓存-获取缓存
* 通过KEY获取缓存数据
* @param string $key KEY值
*/
public function get_cache($key) {
return apc_fetch($key);
}
/**
* Apc缓存-清除一个缓存
* 从memcache中删除一条缓存
* @param string $key KEY值
*/
public function clear($key) {
return apc_delete($key);
}
/**
* Apc缓存-清空所有缓存
* 不建议使用该功能
* @return
*/
public function clear_all() {
apc_clear_cache('user'); //清除用户缓存
return apc_clear_cache(); //清楚缓存
}
/**
* 检查APC缓存是否存在
* @param string $key KEY值
*/
public function exists($key) {
return apc_exists($key);
}
/**
* 字段自增-用于记数
* @param string $key KEY值
* @param int $step 新增的step值
*/
public function inc($key, $step) {
return apc_inc($key, (int) $step);
}
/**
* 字段自减-用于记数
* @param string $key KEY值
* @param int $step 新增的step值
*/
public function dec($key, $step) {
return apc_dec($key, (int) $step);
}
/**
* 返回APC缓存信息
*/
public function info() {
return apc_cache_info();
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole如果想要在开机启动时,自动运行你的swoole Server,可以在/etc/rc.local文件中加入/usr/bin/php /data/webroot/www.swoole.com/server.php。
php7提示500错误的解决办法:1、找到Visual Studio2015和2017以及2019三合一的安装包;2、根据自己系统的版本选择,并下载安装即可。
引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮。但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?...
在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数。序列化serialize()序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:classS{public$test="pikachu";}$s=newS();//创建一个对象serialize($s);/
在thinkphp中,模型指的是企业数据和业务规则,在实际项目开发中主要实现与数据库进行操作;模型类的命名需要除去表前缀的数据库名称,采用驼峰法命名,并且首字母使用大写,模型类完成了基本的 CURD、ActiveRecord模式、连贯操作和统计查询等。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008