如何确定是否启用了任何PHP缓存?

27

我曾经认为缓存非常难安装,所以从未尝试过...在了解了APC之后,它似乎很容易安装。我一直以为我需要修改应用程序中的大量PHP代码才能使用它,哈哈。

无论如何,我想安装APC。我可以使用phpinfo()并注意到它没有出现在页面上,因此它尚未安装。这是否也适用于其他各种缓存系统?如果已经安装了另一个缓存系统,我不想安装APC,因为我不确定它是否会引起冲突。主机是否会自动为您安装这些软件?

有哪些步骤可以检查是否启用了任何类型的缓存?

4个回答

75

要以程序方式检查:

if(extension_loaded('apc') && ini_get('apc.enabled'))
{
    echo "APC enabled!";
}
注意:自版本5.5起,PHP现在包含了一个Opcode缓存/优化器(默认情况下禁用)。如果你仍然想运行APC,那么就有一个名为APCu的扩展,正如@alcohol在评论中提到的那样。如果您正在使用该扩展,则需要将extension_loaded('apc')替换为extension_loaded('apcu')。或者您可以从命令行验证它:phpX.Y -i | grep apcu
但务必确保您使用的是与您的Web服务器使用的相同的PHP二进制文件。

还有一个名为ext-apcu的扩展,它是专门针对PHP 5.5中的更改而设计的。 - alcohol

14
任何已安装的缓存扩展都会在您的phpinfo()文件中列出;它们应该被列为“Configure Command”框中的参数之一(例如-enable-apc),并且应该在页面下方有自己的部分。
最流行的PHP缓存模块是APC和Memcache。

谢谢提供信息。看起来我没有安装任何东西。 - Joker

3

对于那些正在使用APCU(替代APC)的人

只需在命令行中运行:

php -r "var_dump(function_exists('apcu_enabled') && apcu_enabled());"

0

我认为,大多数 PHP 缓存功能都是以扩展的形式存在的,这些扩展应该会在 phpinfo() 调用中显示出来(尽管你需要识别它们)。

你会发现一些用 PHP 编写的缓存库,可以缓存页面加载,特别是当内容是从数据库或其他网络请求生成时,但这些通常需要了解该库并需要修改代码。

这也取决于你要寻找什么类型的缓存,因为各种扩展和程序执行不同的任务。虽然 APC 可以缓存你的半编译/解释代码以提高性能,但像 memcache 这样的东西(也推荐使用)旨在减少你可能正在使用的任何数据库功能的负载。

个人而言,我会寻找所需的功能,并尝试安装它 - 当然,除非它已经存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接