是否有可能在不产生任何重大停机时间的情况下升级我的服务器上运行的 PHP 版本?
我想避免的是升级 PHP 时我的网站停机几分钟(如果出现问题,停机时间会更长)。我不介意它们停机几秒钟。
理想情况下,我希望在服务器上安装两个版本的 PHP,只需轻按开关即可在它们之间切换。这样,如果新版本出现不可预见的问题,我可以再次轻按开关返回旧版本。
我能想到的唯一方法是让两台服务器运行不同版本的 PHP,并使用 DNS 来选择用户看到的版本。单台服务器可以实现吗?
编辑
我应该提到我正在使用运行 Nginx 和 PHP-FPM/FastCGI 的 Ubuntu 10.04 服务器。
答案1
将每个版本的 PHP 安装到不同的目录,使用符号链接在它们之间切换 - 在 Unix 中,符号链接是原子的,这意味着没有停机时间。然后只需重新启动您的 Web 服务器即可重新启动工作线程,从而使用新的 PHP 版本。
所以:
/opt/php/5.1
/opt/php/5.2
/opt/php/live -> /opt/php/5.2
这不是零停机时间,而是秒停机时间 - 根据您的要求。
答案2
正如 Adam Gibbins 和 Zoredache 所提到的,这完全取决于您的设置。如果您在服务器上使用 gentoo-linux,则可以将每个 PHP 版本安装在不同的插槽中,然后使用 eselect 在它们之间切换。您仍然需要重新启动 Web 服务器,这是无法避免的,但只需几秒钟。当然,无论您使用哪种方法,您都需要一个测试脚本来确保一切正常。