有没有人有一个伟大的系统,或任何想法,做的标题说?
我想将web应用的生产版本--用PHP编写并由Apache提供--从1234版切换到1235版,但在此之前,所有文件都已进入操作码缓存(APC)。然后,在切换之后,从第1234版中删除文件的旧缓存条目。
据我所知,从一个版本到下一个版本有三种简单的原子切换方式。
next.
mv老版本& mv新版本直播
若要切换到新版本。
。
我认为最好不要做3,但无论如何我想不出预编译所有php文件并使用1或2来切换发行版。
那么,有人能不能说服我依赖选项3,或者告诉我如何使用1或2,或者透露一些我没有想到的其他选项?
发布于 2010-05-14 16:21:08
你到底为什么要这么做?
当我切换到新版本时,我只需停止我的Apache,通过从我的VCS签出来替换服务器上的PHP文件,然后重新启动Apache。它通常需要不到30秒才能完成,甚至是脚本化的。所有这些都是在用户很少或没有用户的时候执行的。在此之后,操作码缓存是空的,一旦有人使用这些文件,就会自己填充。
也许最初的几次命中不会有最佳的表现,但这不应该是那么糟糕。在我的生产系统中,没有人注意到这种短暂的性能下降。其中有一些非常重的负荷系统。
您甚至可以在您的服务器上放置一个简单的“升级.尽快回来”屏幕,同时替换这些文件,以避免向用户发出任何令人不安的错误消息。
发布于 2010-05-14 16:12:32
然后在开关之后,从第1234版中删除文件的旧缓存条目。
您只能清除整个缓存,或者根本不能清除。这不是一个选择性的过程。这可能会改变你处理这个问题的方法。如果预编译是最重要的,那么在切换期间,您可能被迫关闭服务器。
https://stackoverflow.com/questions/2834942
复制相似问题