我们最近启用 APC 在我们的服务器上,并且偶尔当我们发布的新的代码或改变我们发现的源文件是改变了开始投掷错误的不会反映在代码中,通常分析错误描述的标记,不存在。我们已经证实此,通过运行 php -l 在该文件的错误日志,说是受到影响。通常一个重新修复的问题。我们正在使用PHP5.2.0和APC3.01.9.我的问题是,有没有其他人经验丰富的这个问题,或任何人都不会承认我们的问题是什么?如果是这样,你怎么修复或我们如何能解决这个问题?

编辑:也许我应该加入一些细节关于我们的发布过程。内容是被推的生产服务器可以通过从临时服务器。我们启用了 apc.stat_ctime 因为它说这有助于事物运行顺畅有可以. apc.write_lock 是默认,我们没有无障碍。同上 apc.file_update_protection.

有帮助吗?

解决方案

听起来像一部分出版的文件正在读取和缓存为打破。 apc。file_update_protection 目的是帮助阻止这一切。

在php.ini: apc.file_update_protection integer

apc.file_update_protection 设置 把一个延迟缓全新的 文件。默认值是2秒 意味着,如果修改 时间戳(mtime)在文件上显示 这是不到2秒钟的时候它 被访问,它会不会缓存。不幸的人访问 这一半的书面文件将仍然看到 古怪,但至少它不会 持续存在。

以下的问题,正在编辑:一个原因,我没有看到这些类型的问题是,我推一个全新的复制网站(与SVN出口).只有在此之后,全部完成,它不会成为见到Apache/Mod_php(见我的答案 如何开始部署PHP应用程序从一个颠复存储库? )

其他的事情可能发生的当然是,如果要更新,则可以更新的文件,取决于其他尚未被上传。可以只能保证原子的更新的单独的文件,不在整个集合,正在改变/上传。另一个原因,我认为,以上载网站的连接质量,然后才投入使用。

其他提示

这听起来像APC不是预或得到正确的文件stat信息。你可以检查以确保APC配置 apc。stat 设置是否正确。另一件事你可以做到这一点力缓存清楚 apc_clear_cache() 当你发布的新的代码。

从来没见过之前,甚至如果我是一个庞大的用户的APC。也许试图触发一个脚本,空APC操作,每次你送新的《服务器?

当你得到一个文件与分析错误,回来,然后repubish.采取同样的文件,该文件现在的工作,做一个差异对文件的分析错误。

ctime意味着创建时间。你会想手工冲洗你的整个缓存每次你做的更新。

你可以很容易地做到这一点,通过投入apc.php 剧本上的某个地方你的服务器。这个脚本给你缓存的统计数据,并将允许你降缓。

剧本配有APC。

Hopet他的帮助, 在

这可能是发生的事情,因为有一个之间的不匹配你的代码,以及缓存的版本的代码。

例如,APC有一个缓存的版本User.php但你做的改变User.php 或者向数据用户使用。缓存的版本仍在运行,甚至在你的部署,因为它没有过期。

如果你清楚你的APC缓存项目进行部署时,这个问题应该消失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top