APC发布问题

Jer*_*oot 5 php apc

我们最近在我们的服务器上启用了APC,偶尔当我们发布新代码或更改时,我们发现更改的源文件开始抛出未反映在代码中的错误,通常会解析描述不符合的令牌的错误存在.我们通过运行php -l错误日志所说的受影响的文件来验证这一点.通常,重新发布可以解决问题.我们使用的是PHP 5.2.0和APC 3.01.9.我的问题是,有其他人遇到过这个问题,还是有人认出我们的问题是什么?如果是这样,你是如何解决它或我们如何解决它?

编辑:我应该添加一些关于我们的发布过程的细节.正在通过rsync从登台服务器将内容推送到生产服务器.我们启用了apc.stat_ctime因为它说这有助于使用rsync更顺畅. apc.write_lock默认情况下处于启用状态,我们尚未禁用它.同上apc.file_update_protection.

Ali*_*man 7

听起来像部分发布的文件正在被读取并缓存为已损坏.apc.file_update_protection旨在帮助阻止这种情况.

在php.ini中: apc.file_update_protection integer

apc.file_update_protection设置会延迟缓存全新文件.默认值为2秒,这意味着如果文件上的修改时间戳(mtime)在访问时显示它小于2秒,则不会缓存它.访问这个半写文件的不幸的人仍然会看到怪异,但至少它不会持久.

在编辑问题之后:我没有看到这些问题的一个原因是我推送了一个全新的网站副本(使用SVN导出).只有在完全完成后才能看到Apache/Mod_php(参见我的回答如何开始从subversion存储库部署PHP应用程序?)

当然可能发生的另一件事是,如果您正在进行更新,则可能正在更新依赖于尚未上载的其他文件.Rsync只能保证单个文件的原子更新,而不能保证正在更改/上传的整个集合.我认为上传网站的另一个原因是en-mass,然后才投入使用.