2

假设我有一个PHP使用Kernel模式运行的网站。假设我每秒有 1000 个请求访问Kernel.php文件。我想在不打开维护模式的情况下上传该文件的新版本。这样做安全吗?我可以只上传新文件,并且在某些时候请求将由这个新文件处理吗?

  • Kernel.php肯定没有错误
  • 该文件包含require_once()index.php
  • 在这种情况下忘记维护模式,请

我被告知要添加一些关于为什么我什至考虑过这种方法的信息。

我们正在尝试开发一个系统,提供更新网页的任何部分的可能性,由我们的引擎驱动。这Kernel只是一个示例 - 如果您认为可以在没有维护模式的情况下修改此文件,那么其他任何不那么重要的文件可能也是如此。

有时更新是如此简单,以至于打开维护模式就像停止对一个国家的军事入侵,因为其中一名私人(士兵)打了个喷嚏。

既然我们在谈论炸毁东西和进程间通信:我们谁都不会冒险在运行网站上上传核心文件而不冻结请求几秒钟,但是模板文件呢?这当然是一个反问,但现在我想你已经完全理解了。

4

2 回答 2

1

首先让我说这可能不是一个好主意。

你在 Linux 服务器上运行吗?如果是这样,重命名文件是一个原子操作,完成此操作的最佳方法是上传具有不同名称的新文件,然后重命名旧文件。

如果不是这样,在旧文件上重命名它可能仍然比仅仅上传它更好的方法,因为在写入文件时您可能会收到一些请求,这会导致错误。

于 2013-08-28T14:52:52.413 回答
0

为您的 Web 服务器打开 PHP 操作码缓存,并将时间间隔设置为 5 分钟或更长时间。

您现在可以复制正在运行的 PHP 代码之上的文件,下次间隔到期时,服务器将检查修改并重新编译操作码。您必须等待几分钟才能注意到更改,因为服务器将继续使用缓存的代码,直到它过期。

如果您破坏依赖数量的 PHP 文件,或者服务器将更新 1 个文件但具有其他文件的不同缓存副本,我无法建议会发生什么。

为最可靠的方法。您需要在 Web 服务器中使用一项功能,该功能允许您热交换主机的目录。然后,您将所有 PHP 代码的全新副本安装到一个新目录中,然后将主机热交换到这个新位置。不应中断任何请求。

于 2013-08-28T15:02:33.647 回答