13

我读过关于 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 但我没有任何像 phpinfo 中所述的 apc 文件应该出现。

请帮我检查 APC 是否正常工作,如果没有,可能是什么问题。

4

6 回答 6

8

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

  1. 作为操作码缓存。您启用了支持,所以这是有效的;和
  2. 作为一般缓存。为此,您必须明确使用API

(1)是主要利益。它通过存储“编译”脚本的操作码结果来减少脚本执行的时间。

至于它的工作,从安装说明

注意:在 Windows 上,APC 需要一个临时路径才能存在,并且可由 Web 服务器写入。它按顺序检查 TMP、TEMP、USERPROFILE 环境变量,如果没有设置,最后尝试 WINDOWS 目录。

所以你不应该在 CentOS 上需要它(或查看任何活动)。

话虽如此,require/include 比 require_once/include_once/autoload 更好,但只有在处理数百个文件时才有意义。

于 2009-09-30T00:40:50.613 回答
2

您的网站基本上是一个 PHP 文件,然后包含或需要其他文件吗?这可能只注册为一个文件。此外,据我所知,条件包含/要求逻辑可能不会按预期缓存,尽管这可能只是传闻!

于 2009-09-30T00:54:21.877 回答
1

你检查过日志文件吗?查看 /var/log/apache2/error.log 或者它在您的发行版下的名称。

另外,尝试制作 2-3 个 php 文件,将浏览器指向它们,然后检查 APC 缓存缓存了多少 php 文件。

不确定 APC,但我推荐 Eaccelerator ( http://eaccelerator.net/ )。我前段时间测试过它,确实有所作为。

于 2009-09-30T11:55:55.657 回答
1

APC 实际上并不在进程之间共享缓存。尝试将您的 PHP 进程配置为 fork Childs 并让主 PHP 进程保持运行。

请参阅:在 FastCGI 下运行时,如何在多个 PHP 进程之间共享 APC 缓存?

于 2009-10-04T17:58:47.093 回答
1

在 APC 3.1.5dev 分支中,引入了一个新选项,允许您禁用操作码缓存。 它似乎默认关闭。

尝试将此添加到您的 APC 配置文件中:

apc.enable_opcode_cache=1
于 2014-05-24T15:25:09.967 回答
0

http://www.litespeedtech.com/support/forum/showthread.php?t=3761

“APC 不能很好地与 PHP suEXEC 配合使用,因为每个 PHP 进程都将使用自己的缓存内存,而不是共享的。

如果你需要使用 PHP suEXEC,你应该尝试 eAccelerator + /dev/shm。”

也有同样的问题,似乎 PHP suEXEC + APC 是问题

于 2011-04-08T05:32:44.983 回答