我正在将LAMP与CodeIgniter一起用于我的一个项目;版本由SVN控制。每当我在www目录中执行svn export file:///svnrepo/project/trunk/www . --force
然后重新加载网页时,它就会变为空白。
该网站仅在我执行service httpd restart
(使用CentOS 5)后显示。
我希望以后能够使用Phing构建脚本执行svn导出,并且我不希望每次构建时都获得root权限并重新启动apache。
我遇到的常见问题是什么?如何在不重启apache的情况下解决它?
修改 似乎有人之前遇到过这个问题:http://codeigniter.com/forums/viewthread/181642/
答案 0 :(得分:0)
好的,我知道了.SN维护了一个文件上次修改时间,它抛出了APC缓存。因此,为了解决这个问题,我们在运行SVN导出后更新所有文件的上次修改时间。这是我的最终剧本:
#!/bin/sh
svn export --force file:///home/steve/repo/exmaple/trunk \
/home/steve/public_html/example.com/public/
find /home/steve/public_html/exmaple.com/public | xargs touch
您可以找到更多详情here。
答案 1 :(得分:0)
另一种解决方案是在apc.ini中设置apc.stat = 0(reference),然后使用apc_clear_cache()
(reference)强制删除操作码高速缓存中。
此解决方案的优点在于,当apc.stat
设置为0时,它会禁用对每个请求的检查,以确定文件是否已被修改。这导致了巨大的性能提升。
此外,使用apc_clear_cache()
清除APC缓存往往会导致更清晰的构建。我遇到了不稳定的竞争条件,其中某些文件将被构建出来,这些文件依赖于尚未构建的其他文件。这导致了一系列致命错误。这里唯一需要注意的是apc_clear_cache()
需要通过apache运行,所以你需要为此实现一个wget
或类似的东西。