如何使APC(PHP缓存)工作?

时间:2009-09-30 00:37:27

标签: php caching centos apc

我已经阅读了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是否有效,如果没有,可能会出现什么问题。

6 个答案:

答案 0 :(得分:8)

APC可以通过两种方式使用:

  1. 作为操作码缓存。您已启用支持,因此这是有效的;和
  2. 作为一般缓存。您必须明确使用API
  3. (1)是主要的好处。它通过存储“编译”脚本的操作码结果来减少脚本执行的时间。

    至于它的工作原理,来自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是问题