我有一台 Debian 机器,其中我同时使用 apache2(带有 mod_proxy)和 Lighttpd(用于长轮询服务和静态内容)。
apache 和 lighttpd 都运行 php5,并带有 APC。
Lighttp 使用 php5 的 FastCGI。
现在,两个环境都运行良好,但是 APC 缓存是分开的,有没有办法告诉 lighttpd 和 apache 使用相同的 APC 缓存?
我想要获得的示例:
//example.com, served by apache2:
<?php
apc_add('foo', 'bar');
echo apc_fetch('foo');
//output: bar
?>
//polling.example.com, served by lighttpd:
<?php
echo apc_fetch('foo');
//output desired: bar
//actual output: nothing!
?>
ps:我觉得这是服务器的问题,如果不是的话,我会在Stackoverflow上发帖。
编辑:读完丹的回答后,也搜索了堆栈溢出,很明显,目前APC缓存不能被共享,当有人需要这一点时,必须选择另一个缓存系统(如memcache,即比APC慢
如果认为该问题重复,请随时关闭该问题。
答案1
我不知道 APC 缓存是否可以在多个(FastCGI)PHP 实例之间共享,但也许memcached或者类似的程序可以解决您的问题。不过,您必须更改您的 PHP 脚本。
答案2
根据本未偿付债务中的信息PECL 功能请求单对于 APC,关于在同一个 httpd 环境中的多个 FCGI 进程之间共享缓存数据和锁,我想说在多个 httpd 环境之间也不可能做到这一点。
编辑以添加:
使用 APC 仍会给您带来一些好处。守护进程启动后的初始结果可能不是很好,但随着时间的推移,每个进程的缓存都会被播种并重复使用。memcache 和 APC 执行类似的功能,因为它们“缓存信息”,但它们的实际用途却大不相同。memcache 是数据的键值缓存,而 APC 是代码的操作码缓存。