php-apcu (CGI/FastCGI) apc_fetch 始终 return 错误

php-apcu (CGI/FastCGI) apc_fetch always return false

在 php CGI 环境中使用 php-apcu (https://github.com/krakjoe/apcu) 扩展(不是 apc)时,apc_store 中存储的数据为空。

谁有解决这个问题的经验?

示例PHP文件:测试-apc.php

<?php
$k = 'test';
if(isset($_GET['get'])) {
    $result = apc_fetch($k);
    echo "Read entry '$k': $result";
} else if(isset($_GET['clear'])) {
    echo "Clear entry '$k'";
    apc_clear_cache('user');
} else {
    apc_store($k, "HelloWord");
    echo "Write entry '$k' set";
}
print_r(apc_cache_info('user'));
?>

重现步骤:

  1. 打开http://server/test-apc.php调用apc_store
  2. 打开http://server/test-apc.php?get以使用apc_fetch接收存储的数据

顺便说一句:apc_cache_info('user') 在第一个请求中正确显示它,第二个是空的

相关软件包(OS: Debian 3.2.63):

module php-apcu 与 CGI/fcgid 不完全兼容。

可能的原因: CGI/fcgid 在每个 HTTP REQUEST 上将 php 解释器作为 新实例 执行。所以 apcu/apc 无法恢复用户缓存。

module mod-fastcgiDebian 的非免费软件包)连同 php5-fpm可以提供补救措施。 它使用不同的技术来管理流程。


http://php-fpm.org/wiki/(自动取款机 - 2015-09-02)