php-apcu(CGI/FastCGI)apc_fetch始终返回false

问题描述:

在php CGI环境中使用php-apcu(https://github.com/krakjoe/apcu)扩展名(而不是apc)时,apc_store的存储数据为空。php-apcu(CGI/FastCGI)apc_fetch始终返回false

任何人都有如何解决这个问题的经验?

例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( '用户')示出了它与第一请求正确,第二是空

相关的包(OS:Debian的63年3月2日):

  • 阿帕奇2.2.22( MPM-prefork的,suexec的定制,包装器)
  • php5.5作为CGI
  • 的php5-apcu 4.0.7
  • (和依赖关系)

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

可能的原因: CGI/fcgid执行PHP解释器在每一个HTTP请求新实例。所以apcu/apc不能恢复用户缓存。

模块MOD-的fastcgi非自由包为Debian)连同的php5-FPM可以提供补救。 它使用不同的技术来管理流程。


http://php-fpm.org/wiki/(向下大气压 - 2015年9月2日)