我以前在WAMP服务器和PHP 5.3上遇到过这个问题,现在在Linux上使用PHP 5.4也面临同样的问题。
基本上,启用或禁用APC对性能没有影响,尽管apc.php中的统计数据显示不同。
以下是一个示例测试脚本,其中包括30多个Doctrine PHP文件,并计时:
$t = microtime(true);
include 'Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php';
printf('%.3f s', microtime(true)-$t);
- 在Windows上的结果(Zend Server CE,PHP 5.4):
0.001 s
- 在Linux上的结果(PHP 5.4和APC 3.1.11):
0.106 s
注意:即使在上面的脚本中没有显示,我实际上正在使用文件的完整路径,而不是依赖于include_path。
我在Linux上得到的结果无论apc.enabled
是0
还是1
都是相同的,所以看起来opcode缓存只是不起作用。
然而,apc.php
说:
软件包(来自remi存储库,CentOS 6.3):
php-5.4.5-1.el6.remi.x86_64
php-pecl-apc-3.1.11-1.el6.remi.1.x86_64
APC配置:
apc.enabled=1
apc.shm_segments=1
apc.shm_size=64M
apc.num_files_hint=1024
apc.user_entries_hint=4096
apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.file_update_protection=2
apc.enable_cli=1
apc.max_file_size=1M
apc.stat=1
apc.stat_ctime=0
apc.canonicalize=0
apc.write_lock=1
最后一件事,是的,PHP报告APC已启用:
var_dump(extension_loaded('apc')); // (bool) true