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'));
?>
重现步骤:
- 打开
http://server/test-apc.php
调用apc_store
- 打开
http://server/test-apc.php?get
以使用apc_fetch
接收存储的数据
顺便说一句:apc_cache_info('user') 在第一个请求中正确显示它,第二个是空的
相关软件包(OS: Debian 3.2.63):
- Apache 2.2.22(mpm-prefork、suexec-custom、包装器)
- php5.5 为 CGI
- php5-apcu 4.0.7
- (和依赖项)
module php-apcu 与 CGI/fcgid 不完全兼容。
可能的原因: CGI/fcgid 在每个 HTTP REQUEST 上将 php 解释器作为 新实例 执行。所以 apcu/apc 无法恢复用户缓存。
module mod-fastcgi(Debian 的非免费软件包)连同 php5-fpm可以提供补救措施。
它使用不同的技术来管理流程。
http://php-fpm.org/wiki/(自动取款机 - 2015-09-02)
在 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'));
?>
重现步骤:
- 打开
http://server/test-apc.php
调用apc_store
- 打开
http://server/test-apc.php?get
以使用apc_fetch
接收存储的数据
顺便说一句:apc_cache_info('user') 在第一个请求中正确显示它,第二个是空的
相关软件包(OS: Debian 3.2.63):
- Apache 2.2.22(mpm-prefork、suexec-custom、包装器)
- php5.5 为 CGI
- php5-apcu 4.0.7
- (和依赖项)
module php-apcu 与 CGI/fcgid 不完全兼容。
可能的原因: CGI/fcgid 在每个 HTTP REQUEST 上将 php 解释器作为 新实例 执行。所以 apcu/apc 无法恢复用户缓存。
module mod-fastcgi(Debian 的非免费软件包)连同 php5-fpm可以提供补救措施。 它使用不同的技术来管理流程。
http://php-fpm.org/wiki/(自动取款机 - 2015-09-02)