ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:31.50KB ,
资源ID:2305453      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2305453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PHP之APC缓存详细介绍.doc)为本站会员(dreamzhangning)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

PHP之APC缓存详细介绍.doc

1、PHP 之 APC 缓存详细介绍APC,全称是 Alternative PHP Cache,官方翻译叫“可选 PHP 缓存“.它为我们提供了缓存和优化 PHP 的中间代码的框架。 APC 的缓存分两部分:系统缓存和用户数据缓存。系统缓存它是指 APC 把 PHP 文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存 3600s(一小时) 。但是这样仍会浪费大量 CPU 时间。因此可以在 php.ini 中设置 system 缓存为永不过期(apc.ttl=0) 。不过如果这 样设置,改运 php 代码后需要重启WEB 服务器。目前使用较多的

2、是指此类缓存。用户数据缓存缓存由用户在编写 PHP 代码时用 apc_store 和 apc_fetch 函数操作读取、写入的。如果数据量不大的话,可以一试。如果数据量大,使用类似 memcache此类的更加专着的内存缓存方案会更好缓存 key 生成规则APC 的缓存中的每个 slot 都会有一个 key,key 是 apc_cache_key_t 结构体类型,除了 key 相关的属性,关键是 h 字段的生 成。 h 字段决定了此元素落于slots 数组的哪一个位置。对于用户缓存和系统缓存,其生成规则不同。 用户缓存通过 apc_cache_make_user_key 函数生成 key.通过用

3、户传递进来的 key 字符串,依赖 PHP 内核中的 hash 函数(PHP 的 hashtable 所使用的 hash 函数:zend_inline_hash_func) ,生成 h 值。系统缓存通过 apc_cache_make_file_key 函数生成 key.通过 APC 的配置项 apc.stat 的开关来区别对待不同的方 案。在打开的情况下,即 apc.stat= On 时,如果被更新则自动重新编译和缓存编译后的内容。此时的 h 值是文件的 device 和 inode 相加所得的值。在关闭的情况下,即 apc.stat=off 时,当文件被修改后,如果要使更新的内容生效,则必须

4、重启 Web 服务器。此时 h 值是根据文件的路径地址生成,并且这里的路径是绝对路径。即使你是使用的相对路径,也会查找 PG(include_path)定位文件,以取得绝对路径,所以使用绝对路径会跳过检查,可以提高代码的效率。添加缓存过程以用户缓存为例,apc_add 函数用于给 APC 缓存中添加内容。如果 key 参数为字符串中,APC 会根据此字符串生成 key,如果 key 参数为数组,APC 会遍历整个数组,生成 key.根据这些 key,APC 会调用_apc_store 将值存储到 缓存中。由于这是用户缓存,当前使用的缓存为 apc_user_cache.执行写入操作的是apc_

5、cache_make_user_entry 函数, 其最终调用 apc_cache_user_insert 执行遍历查询和写入操作。与此对应,系统缓存使用 apc_cache_insert 执行写入操作, 其最终都会调用_apc_cache_insert.不管是用户缓存还是系统缓存,大体的执行过程类似,步骤如下:通过求余操作,定位当前 key 的在 slots 数组中的位置: cache-slotskey.h % cache-num_slots;在定位到 slots 数组中的位置后,遍历当前 key 对应的 slot 链表,如果存在 slot 的 key 和要写入的 key 匹配或 slot

6、过期,清除当前 slot.在最后一个 slot 的后面插入新的 slot.2、APC 模块安装WINDOWS第一步:下载 php_apc.dll 在/ 要与 php 版本对应 将 php_apc.dll 放入你的 ext 目录第二步:让 php.ini 支持 apc 扩展模块。 然后打开 php.ini 加入:extension=php_apc.dllapc.rfc1867 = onapc.max_file_size = 100Mupload_max_filesize = 100Mpost_max_size = 100M/以上参数可自己定义第三步:检查是否支持 PHP APC apc_stor

7、e 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 匿名映射创建共享内存,缓存对象都存放

8、在这块 “大型“的内存空间。由 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 守护进程直到 htt

9、pd 守护进程关闭) ,使用 APC 比 Memcached 会更好。必竟不要经过网络传输协议 tcp.8,APC 不适于通过函数 apc_store()缓存频繁变更的用户数据,会出现一些奇异现象。LIUNXwget -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-configma

10、kesudo make install在/usr/local/php/etc/php.ini 加入extension = “apc.so“ ;APC settingapc.enabled = 1apc.shm_segments = 1apc.shm_size = 64Mapc.optimization = 1apc.num_files_hint = 0apc.ttl = 0apc.gc_ttl = 3600apc.cache_by_default = on重启 apache 或者 /usr/local/php/sbin/php-fpm restart查看 phpinfo apc下面引用框架的

11、APC 缓存类initphp 框架之 APC 缓存类php?phpif (!defined (IS_INITPHP) ) exit(Access Denied!) ;/* InitPHP 2.0 国产 PHP 开发框架 Dao-APC 缓存 不适合频繁写入的缓存数据*-* 版权所有: CopyRight By * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己*-* $Author:zhuli* $Dtime:2011-10-09*/class apcInit /* Apc 缓存-设置缓存* 设置缓存 key,value 和缓存时间* param stri

12、ng $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

13、 ($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 值*/publ

14、ic 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() ;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报