APC和PHP-缓存混合导致站点损坏

|| 我希望有人能帮我解决这个问题。我最近在一些仅托管一个应用程序的服务器上运行APC,并且运行良好。不幸的是,我今晚去了在我的主力网络服务器上运行它,并且一打开它,我就开始从我的wordpress博客中获得“混合”。第一个被加载的博客将缓存数据库信息,然后稍后加载的每个博客将得到一个数据库错误。 我想知道的是,是否存在一种以某种方式为缓存添加前缀的方式,从而可以避免此问题。我认为缓存将尊重文件之间绝对路径的差异,并且不会在多个站点上使用相同的缓存副本。 提前致谢! 更新资料 根据要求,这里是我在/etc/php.d/中用来覆盖默认设置的apc.ini文件的副本: /etc/php.d/apc.ini
extension=apc.so
apc.shm_size                    = 64M
apc.max_file_size               = 8M
apc.include_once_override       = 1
apc.stat_ctime                  = 1
    
已邀请:
据我所知,您不能使用全局设置为不同的应用程序设置前缀。您可以更改密钥名称,并在其名称前添加前缀。如果您更熟练,则可以使用fastcgi使用两个不同的php实例,具体取决于您使用的http服务器。我们正在使用APC和ngix做类似的事情:)     
您是否尝试将
apc.file_md5
设置为
On
?其他可能有所不同的指令:
apc.canonicalize
(如果启用,则相对路径会在无状态模式下规范化。)
apc.preload_path
(不知道,真的...) 根据您的目标,我相信
apc.file_md5
apc.canonicalize
会有所帮助。     
Wordpress是否添加缓存条目以保存数据库请求?如果是这样,您将需要编辑缓存库文件以包含前缀。 我猜您正在使用wordpress插件?如果是这样,哪个插件?     
如果您使用的是Doctrine ORM,并且未指定前缀就启用了APC缓存,则可能会导致问题。 就我而言,使用Symfony框架并盲目遵循http://symfony-check.org/上的指南导致了APC缓存混合。 多亏了Apostrope Now的同事https://groups.google.com/d/msg/apostrophenow/1Z79wc4wjQk/6Vi2jLjP-twJ,您似乎需要为Doctrine缓存指定一个唯一的前缀。
/config/ProjectConfiguration.class.php

public function configureDoctrine(Doctrine_Manager $manager)
{
  $manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, new Doctrine_Cache_Apc(array(\'prefix\' => \'something_unique\'));
}
    
您是否已经尝试过内存映射?似乎(我要尝试!)它应该可以正常工作,并且使用php-fpm和池,它允许您使用不同的缓存来拥有不同的帐户...! 这是您可能感兴趣的链接:http://ravirajsblog.blogspot.it/2012/02/php-apc-locking-mechanism.html :)     
我有模块,可以为您提供帮助:http://github.com/jamm/memory 您可以在其中使用前缀,密钥标签和其他好处。 而且,您可以更改缓存存储(APC,memcache,shm-memory),而无需更改代码(所有存储一个接口)。 编辑:它用于用户的缓存,因此它不能解决您的问题。您提到得晚了:)     
我只需要处理这个问题即可。我添加了以下apc参数
apc.file_md5 = 1
apc.canonicalize = 0 
不确定是否有帮助或我添加到文件的变量。但是在我的情况下,它是在一个Web根目录下混合文件,这些文件恰好存在于不同的路径中,具有相同的名称和相同的“标题”。     

要回复问题请先登录注册