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'));
?>
重现步骤:
- 打开
http://server/test-apc.php
调用apc_store
- 打开
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日)