在linux apache服务器上执行时替换php文件会发生什么?

时间:2013-03-18 13:41:23

标签: php linux apache apc opcode

有没有办法安全地替换服务器上的php文件,而用户正在执行?我的意思是 - 我是否必须寻找正确的沉默时刻才能上传具有相同名称的新版本文件?我知道经验丰富的时候更新会导致错误,比如那些文件被截断了,但我想知道究竟是怎么回事:   - 如果首先解析php文件并将其放入操作码,我会认为即使原始文件刚刚更改,该操作码也应该执行到最后。 是因为php文件被修改了,这个操作码不再有效并且它试图“重新加载” - 在这种情况下,甚至APC都不会有帮助吗? 或者更确切地说,当读取php到操作码被中断时出现错误? 或者可能首先删除文件,然后以比读取更慢的速度写入并且此读取到达当前结束? 无论如何 - 是否有任何指令保护php文件免受并发修改和读取?那有工具吗?

3 个答案:

答案 0 :(得分:1)

一般来说,像“维护模式”这样的东西非常有用。它可以通过许多不同的方法来实现,例如更改文档根目录或使用temproary重定向配置。

在您的具体情况下,您只需交换文件即可。当从Web访问它时,解析器将其加载到RAM中并在那里使用它。在复制过程中,它被锁定,因此如果再次访问,PHP会给你一个错误。

移动是大多数系统上的原子操作,因此我建议使用不同的名称上传文件并将其“移动”到右侧。

答案 1 :(得分:1)

锁定或不锁定文件无关紧要。

在linux中,旧文件句柄将指向没有文件名的旧文件(所有句柄关闭后文件将被删除)。并且新文件可以存在同名。

答案 2 :(得分:0)

绝对安全 PHP代码在执行之前是interpreted 正在执行文件时,它没有被锁定 没有什么值得关注的。