apc_clear_cache 在 php 中无法从命令行运行

apc_clear_cache not working from command line in php

我有一个 php 脚本可以清除 apc。 该脚本工作正常,当我使用浏览器打开它时,但是当我从命令行 运行 该文件时,它没有清除缓存。

我检查了 apc.enable_cli 设置,它也处于打开状态(查看屏幕截图)。

这是我的 php-code

<?php

if (isset($argv[1])) {
    $key = $argv[1];

    $info = apc_cache_info("user");
    foreach ($info['cache_list'] as $obj) {
        if (strstr($obj['info'], $key)) {
            apc_delete($obj['info']);
        }
    }

} else {
    apc_clear_cache("user");
}
?>

我错过了什么或做错了什么?

您无法从命令行清除 APC 缓存,因为您访问的不是网络服务器的同一 APC 段。

注意 enable_cli 只允许您在 CLI 环境中使用 APC,但会为您的脚本创建一个段,并在脚本结束时销毁它。它不使用相同的网段,因为它不知道您的网络服务器。

您有两个选择:

  • 通过 FastCGI 调用您的脚本(见下文)
  • file_get_contents()之类调用网页,使用http://

如果需要访问APC数据,也可以阅读我的文章:https://www.dugwood.com/949904-php5-opcode-caching-and-memory-storage-with-apc-xcache-in-command-line-interface-cli-or-cron.html