写入目标文件时出现require()错误

时间:2015-08-11 19:42:14

标签: php vim centos6

我使用vi编辑服务器上的实时文件。这是中等繁忙网站上几乎每个页面都需要的核心文件。在我编辑时,一切运行正常,但是当我保存更改大约一半的时间时,日志显示用户遇到“Failed opening required'public.php'”错误。

我只能假设页面请求在写入文件时进入,并且vi在写入期间保持对文件的独占锁定,并且PHP立即放弃而不是排队等待锁定被释放。但是在这个问题上找不到任何讨论。有人知道吗?有办法解决这种情况吗?我猜测通过本地编辑以“正确”的方式进行操作,推送到存储库然后更新生产站点的更改将会出现同样的问题,因为svn似乎需要更长的时间才能运行,然后vi需要写入。

1 个答案:

答案 0 :(得分:0)

正确的修复将涉及单独的开发,测试和生产环境,以及理智的部署过程。

但原子更新文件的一个简单方法是在目标上重命名新版本。工作流程:

cd temporary-working-dir
cp your/web/stuff/common.php common.php
vi common.php  # make your changes
mv common.php your/web/stuff/common.php

只要源文件和目标文件位于同一设备/分区上,mv应该是即时的,并且每个请求都应该看到文件的旧版本或新版本,两者之间没有任何奇怪之处。

相关问题