我已经阅读了APC,它加速了多个php文件站点。所以我在PHP中有这个特殊的项目有很多文件,我发现require_once只解析类定义(不执行它们)花费大部分时间。
所以我在CentOS 5服务器上安装了APC。我将apc.php移到我的网络服务器上,然后显示
Hits: 1 (50.0%)
Misses: 1 (50.0%)
Cached Files 1 (281.1 KBytes)
我可以访问网站并更改子页面,等等,apc.php仍然只显示一个缓存文件?
在phpinfo()中它显示:
启用APC支持
我不知道该怎么办。 APC是否正常工作(如phpinfo()sais)或不是吗?浏览我网站上的某些页面后,只有一个缓存文件不多。
还有更多如何诊断错误并确保APC有效?我浏览了
apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf
目录/ tmp但我没有任何apc文件,就像在phpinfo中所说的那样。
请帮我检查一下APC是否有效,如果没有,可能会出现什么问题。
答案 0 :(得分:8)
APC可以通过两种方式使用:
至于它的工作原理,来自installation instructions:
注意:在Windows上,APC需要存在临时路径,并且可以由 网络服务器。它检查TMP,TEMP, USERPROFILE中的环境变量 那个顺序,最后尝试了 WINDOWS目录,如果没有 集。
所以你不应该在CentOS上需要它(或看到任何活动)。
话虽这么说,require / include比require_once / include_once / autoload更好,但是只要你用数百个文件做这个就行了。
答案 1 :(得分:2)
您的网站基本上是一个包含或需要其他文件的PHP文件吗?这可能只注册为一个文件。另外,据我所知,条件include / require逻辑可能没有按预期缓存,虽然这可能只是传闻!
答案 2 :(得分:1)
你检查了thr日志文件吗?看看/var/log/apache2/error.log,或者在你的发行版下命名它。
另外,尝试制作2-3个php文件,将浏览器指向它们,然后检查APC缓存缓存了多少个php文件..
不确定APC,但我建议使用Eaccelerator(http://eaccelerator.net/)。我前段时间对它进行过测试,确实有所作为。
答案 3 :(得分:1)
APC实际上不在进程之间共享缓存。 尝试配置PHP-Process以分叉Childs并让Master PHP-Process保持运行。
请参阅:How to share APC cache between several PHP processes when running under FastCGI?
答案 4 :(得分:1)
在APC 3.1.5dev分支中,a new option was introduced允许您禁用操作码缓存。 默认情况下似乎已关闭。
尝试将此添加到您的APC配置文件中:
apc.enable_opcode_cache=1
答案 5 :(得分:0)
http://www.litespeedtech.com/support/forum/showthread.php?t=3761
“APC与PHP suEXEC不兼容,因为每个PHP进程都将使用自己的缓存内存,而不是共享。
如果你需要使用PHP suEXEC,你应该尝试使用eAccelerator + / dev / shm。“
很好的问题,似乎PHP suEXEC + APC是问题