Hal*_*luk 5 php centos apache-2.2
在安装 PHP APC 时,我收到了两个意想不到的问题。我之前在测试环境安装过APC,没有收到这些问题。
问题是:
以下是最初的几行安装:
# pear install pecl/apc
WARNING: channel "pecl.php.net" has updated its protocols, use "channel-update pecl.php.net" to update
downloading APC-3.1.6.tgz ...
Starting to download APC-3.1.6.tgz (148,835 bytes)
..........................done: 148,835 bytes
49 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
1. Enable per request file info about files used from the APC cache : no
1-1, 'all', 'abort', or Enter to continue:
1. Enable spin locks (EXPERIMENTAL) : no
1-1, 'all', 'abort', or Enter to continue:
building in /var/tmp/pear-build-root/APC-3.1.6
running: /var/tmp/APC/configure --enable-apc-filehits=no --enable-apc-spinlocks=no
Run Code Online (Sandbox Code Playgroud)
有谁知道这些问题是做什么的?正确的答案是什么?
简短的回答是选项通常可以保留默认值,您可以将其视为“正确”的答案。
第一个选项 (--enable-apc-filehits) 允许收集apc_cache_info
. 基本上,如果您正在调试与缓存相关的问题,您可以使用它来确定每个请求从缓存中提取哪些文件。从apc_cache_info
文档:
如果cache_type是“filehits”,将返回有关当前请求的字节码缓存已提供哪些文件的信息。必须在编译时使用--enable-filehits启用此功能。
当涉及到第二个选项(--enable-apc-spinlocks)时,自旋锁是一种处理器周期低效的方法,可确保在任何给定时间只有一个进程访问资源。APC 在处理共享内存时使用锁。APC 将缓存放在共享内存中,以便所有 PHP 进程都可以共享缓存,并且锁定确保进程在执行此操作时不会相互绊倒。
从 APC 3.1.9 开始,PECL 安装程序询问启用三个附加选项:内存保护、pthread 读/写锁和 pthread 互斥锁,它们对应于 --enable-apc-memprotect、--enable-apc-pthreadrwlocks 和 --启用-apc-pthreadmutex。前两个标记为实验性并默认禁用;后者已启用。
内存保护在某些情况下将共享内存的某些区域视为只读。
Pthread 读/写锁和互斥锁是备用锁定机制。APC目前可以使用的锁定机制有:
除非 APC 无法编译,否则坚持使用默认锁定机制。Facebook 的 Brian Shire 测试了锁定机制的性能,并在 2007 年提交了结果;当默认设置失败时,您可以使用他的结果来指导您尝试锁定机制。
归档时间: |
|
查看次数: |
4152 次 |
最近记录: |