我有一个PHP脚本,用于打开XML文档,获取DOM并对其进行修改,然后覆盖原始文档。
据我了解,PHP调用是异步进行的,因此多个用户可以同时访问文档,然后保存到第二个保存覆盖第一个文件。
我不需要这样做。我不能使用flock()
因为那只适用于当前进程,所以我该如何实现呢?
答案 0 :(得分:3)
实际上,flock()不仅适用于当前流程:
http://php.net/manual/en/function.flock.php
它 使用本地文件系统,如果您使用负载均衡的Web服务器,这可能会成为一个问题。此外,为了使flock工作,你必须确保任何其他可能“竞争”文件的进程也使用flock,否则进程将“互相”。
答案 1 :(得分:-1)
锁定文件。
创建一个空文件(例如xml.lock)以指示其他进程正在打开xml。 完成修改xml后删除空文件。