SE4 的 APC 和 PHP.INI

SE4 的 APC 和 PHP.INI

我正在运行 Social Engine 4,在安装 APC 时遇到困难,想知道是否有关于如何执行此操作的分步说明?

今天早些时候我让我哥哥帮我解决了这个问题,我想我们已经解决了,只是我不知道在 php.ini 文件中要输入什么才能在 APC 上调用。有什么想法或建议吗?

谢谢

答案1

假设你使用的是 Linux:

[root@server ~]# pecl install apc

要配置 APC,你至少需要在文件中包含以下内容php.ini

[apc]
extension=apc.so

这将使 APC 能够默认设置

答案2

hobodave 所说的只是成功的一半。那么就这么做吧:

安装apc.php来监控APC

下载 http://pecl.php.net/get/APC并将 apc.php 解压到服务器上的 Web 文件夹,然后使用浏览器访问它。您将获得一个漂亮的 APC 内存使用情况图表。在正确的 APC 配置下,此图表在运行数小时后必须保持几乎稳定(因此所有 php 页面都已缓存)。当开发人员更新 php 文件时,将出现内存碎片。

设置大量内存

APC 通过使用大量内存来节省 CPU 周期。因此,请为其提供大量 RAM。一个好的做法是为其提供比实际使用量多 20% 的内存。

通过增加 php.ini 中的 apc.shm_size 并重新启动 httpd 来实现。如果您的服务器有足够的 RAM,请从 1000M(1GB)开始。

APC 可以编译为使用共享段内存或 mmap 内存。您可以在 apc.php > 一般信息 > 共享内存中查看

如果您的 APC 使用 mmap,那么您可以毫无问题地增加。否则,段的大小受操作系统限制。您必须将 apc.shm_size 设置为允许的最大大小,并使用 apc.shm_segments 选项增加段数。

键入此命令来查看每个段的系统限制:

sysctl -a | grep -E "shmall|shmmax"

完成此操作后,您必须定期检查 APC 是否仍有足够的内存。

正确配置TTL

将 apc.ttl 设置为 7200(推荐值)。许多管理员使用 ttl 0 来避免以下常见错误

警告:require_once() [function.require-once]:无法为池分配内存。在 /path/to/file 中

使用 TTL 0 意味着 APC 在内存不足时将刷新所有缓存。错误不再出现,但它使 APC 效率大大降低。这是一个没有风险、没有麻烦的“我不想做我的工作”的决定。APC 不应该这样使用。您应该选择足够高的 TTL,以便访问最多的页面不会过期。最好的是提供足够的内存,这样 APC 就不需要刷新缓存。

只需阅读手册即可了解如何使用 ttl:http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl

为什么 APC 使用这么多的 RAM?

APC 将 PHP 操作码存储在内存中。操作码比源 PHP 大。因为一条 php 指令被翻译成许多操作码。

默认只允许 32MB 内存,这太低了。PHP 是在服务器只有 64MB 内存且大多数脚本每页使用一个 php 文件时设计的。如今,像 Magento 这样的解决方案需要超过 10k 个文件(APC 中约为 60Mb)。您应该允许足够的内存,以便大多数 php 文件始终被缓存。这不是浪费,将操作码保存在内存中比将相应的原始 php 保存在文件缓存中更有效。如今,我们可以找到具有 24GB 内存的专用服务器,价格低至 150 美元,所以不要犹豫,为 APC 预留几 GB。我将 24GB 中的 2GB 放在一台托管 5 个 Magento 商店和约 40 个 wordpress 网站的服务器上,APC 使用 1.2GB。每个 Magento 安装计算 64MB,每个 Wordpress 和一些插件计算 20MB。

我的服务器没有足够的内存,我该怎么办?

首先考虑升级它!:) 如果您使用的是支持多站点的 php 应用程序(Magento、Wordpress),则应将它们合并到一个实例中。因此,您只需缓存一次 php 文件。
您可以使用 apc.fiters 来决定必须缓存哪些文件。您应该缓存最常访问的文件。

我为什么要使用APC并且为此烦恼呢?

APC 很酷,它能让你的网站运行得更快。但它的作用不止于此,APC 还能节省 CPU 周期、节省电量、环保(这就是我花时间编写此配置指南的原因)。

相关内容