编辑php.ini
输入下面
[apc]
apc.enabled=1
apc.shm_segments = 1
apc.shm_size = 1G
apc.ttl = 0
apc.user_ttl = 0
apc.num_files_hint = 1000
apc.write_lock=1
apc.slam_defense=60
apc.stat = 1
apc.max_file_size=1M
apc.cache_by_default=1
apc.filters = NULL
解释下
apc.enabled 开启apc 设置为0关闭,1为开启
apc.shm_segments 共享内存块数
apc.shm_size 共享内存大小,可以设置1G那么显然共享内存的总数就是apc.shm_segments*apc.shm_size
apc.num_files_hint 允许多少个opcode被缓存(也就是项目里面有几个php文件)
apc.stat 为1的时候会自动检查opcode对应的php文件是否有更新,有更新的话会自动更新。设置为0的话就不会去检查了这样会提高apc的效率,但是要使php的修改生效的话就必须重启apache了,或者使用函数apc_cache_clear()来清空缓存(经过我自己测试,设置为1或者0对qps影响不大,那么还不如设置为1,免得每次更改文件后还要重新清空缓存)
apc.ttl opcode缓存的过期时间,设置为0表示不过期,如果不为0会检查两次请求之间的时间,如果时间大于设置值那么会更新opcode缓存(这个比较影响效率,建议设为0)
apc.write_lock 表示多个进程同时更新一份opcode缓存的时候那么只让最先的一个生效,可以有效避免写冲突
apc.max_file_size 超过设置值大小的文件不被缓存
apc.filters 需要特例的文件,多个文件用逗号(,)相隔
apc.filters 与 apc.cache_by_default结合使用,
当apc.cache_by_default为1时apc.filters文件不被缓存,当apc.cache_by_default为0时仅apc.filters文件被缓存
apc.slam_defense 当你的网站并发量很大的时候,可能出现由http守护进程fork的多个子进程同时缓存同一份Opcodes的情况。通过apc.slam_defense则可以减少这种事情的发生机率。比如,apc.slam_defense值设置为60的时候,当遇到未缓存的Opcodes,每100次有60次是不缓存的。