手工填写的操作码缓对于整个应用程序使用apc_compile_file,然后开关于新的释放

StackOverflow https://stackoverflow.com/questions/2834942

任何人都不会有一个很大的系统,或任何想法,这样做如标题所说的吗?

我想到开关生产版的网络应用程序--PHP编写和通过阿帕奇--从释放1234释放1235,但在此之前发生的,所有文件已在操作码的高速缓冲存储器(APC)。然后换、删除旧的高速缓存项文件释放1234.

尽我所能想到有三个简单的方法的原子方式交换从一个版本。

  1. 有一个象征性的链接,例如/生活,这是总的文件的根源,但是改变从一个版本。
  2. 同样,有一个 目录 /生活,始终是该文件的根源,但使用

    mv活oldversion&&mv newversion生活

    切换到新的版本。

  3. 编辑apache configuration改变该文件根newversion,然后重新启动apache.

我认为这是最好不要做3,但我不认为无论如何预编译所有php文件,并使用1或2个以交换释放。

因此有人可以要么让我相信它的好依靠在备选案文3,或者告诉我如何工作有1或2个,或透露的一些其他选择,我不在想什么?

有帮助吗?

解决方案

为什么你要这么做?

当我切换到一个新的版本,我只是阻止我的Apache,替换PHP服务器上的文件通过的结帐离我的风险,并重新启动Apache.它主要不到30秒拉这一关,它甚至可编写脚本.所有被执行的,当时几乎没有或没有的用户。在这之后,操作码缓空和将填补本身尽快有人使用的文件。

也许一些将不会有最佳表现但这不应该那么糟糕。在我的生产系统没有一个没有注意到这短暂的性能下降。并且有一些非常沉重的负载系统的其中之一。

你甚至可以将简单的"升级...很快回来"屏幕上你的服务器更换的文件,以避免任何令人不安的错误消息给你的用户。

其他提示

然后换、删除旧的 高速缓存项文件释放 1234.

你只可以清楚整个缓或根本没有。这不是一个选择性的进程。这可以改变你的方法的问题。如果预编译是最重要的你可能会被迫以降低服务期间的切换。

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