如何清除APC缓存条目?
2022-08-30 06:35:54
我需要在部署新版本的站点时清除所有 APC 缓存条目。APC.php有一个用于清除所有操作码缓存的按钮,但我没有看到用于清除所有用户条目,所有系统条目或所有每个目录条目的按钮。
是否可以通过命令行或其他方式清除所有缓存条目?
我需要在部署新版本的站点时清除所有 APC 缓存条目。APC.php有一个用于清除所有操作码缓存的按钮,但我没有看到用于清除所有用户条目,所有系统条目或所有每个目录条目的按钮。
是否可以通过命令行或其他方式清除所有缓存条目?
您可以使用 PHP 函数 。apc_clear_cache
调用将清除系统缓存,调用将清除用户缓存。apc_clear_cache()
apc_clear_cache('user')
我不相信这些答案中的任何一个实际上都适用于从命令行清除APC缓存。正如Frank Farmer在上面评论的那样,CLI在独立于Apache的进程中运行。
我从命令行清除的解决方案是编写一个脚本,将 APC 清除脚本复制到目录并访问它,然后将其删除。该脚本仅限于从本地主机访问。web
apc_clear.php
这是脚本复制到 Web 目录、访问和删除的文件。
<?php
if (in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
{
apc_clear_cache();
apc_clear_cache('user');
apc_clear_cache('opcode');
echo json_encode(array('success' => true));
}
else
{
die('SUPER TOP SECRET');
}
缓存清除脚本
此脚本apc_clear.php复制到 Web 目录,访问该目录,然后将其删除。这是基于Symfony任务。在Symfony版本中,调用Symfony形式的复制和取消链接,处理错误。您可能希望添加检查以使其成功。
copy($apcPaths['data'], $apcPaths['web']); //'data' is a non web accessable directory
$url = 'http://localhost/apc_clear.php'; //use domain name as necessary
$result = json_decode(file_get_contents($url));
if (isset($result['success']) && $result['success'])
{
//handle success
}
else
{
//handle failure
}
unlink($apcPaths['web']);