首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP同步文件写入

PHP同步文件写入
EN

Stack Overflow用户
提问于 2009-07-30 22:12:14
回答 3查看 11.7K关注 0票数 23

我有两个不同的PHP文件,它们都写入同一个文件。每个PHP脚本由两个不同HTML页面的用户操作调用。我知道可以调用这两个PHP文件,但这两个PHP文件是否会同时尝试写入该文件?如果是,将会发生什么?此外,也可以使其中一个PHP正常失败(文件写入将失败,而另一个PHP可以写入该文件),因为一个PHP函数比另一个PHP函数不那么重要。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-30 22:15:09

解决此问题的常用方法是让两个脚本都使用flock()进行锁定:

代码语言:javascript
复制
$f = fopen('some_file', 'a');
flock($f, LOCK_EX);
fwrite($f, "some_line\n");
flock($f, LOCK_UN);
fclose($f);

这将导致脚本在写入文件之前等待彼此完成对文件的处理。如果你愿意,“不太重要”的脚本可以做到:

代码语言:javascript
复制
$f = fopen('some_file', 'a');
if(flock($f, LOCK_EX | LOCK_NB)) {
    fwrite($f, "some_line\n");
    flock($f, LOCK_UN);
}
fclose($f);

因此,如果它发现文件中的某些内容很忙,它将不会执行任何操作。

票数 34
EN

Stack Overflow用户

发布于 2009-07-30 22:15:27

看一下flock函数。

票数 1
EN

Stack Overflow用户

发布于 2009-07-30 23:39:18

仅供参考: flock仅适用于*nix,在Windows上不可用

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1209688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档