我有两个不同的PHP文件,它们都写入同一个文件。每个PHP脚本由两个不同HTML页面的用户操作调用。我知道可以调用这两个PHP文件,但这两个PHP文件是否会同时尝试写入该文件?如果是,将会发生什么?此外,也可以使其中一个PHP正常失败(文件写入将失败,而另一个PHP可以写入该文件),因为一个PHP函数比另一个PHP函数不那么重要。
发布于 2009-07-30 22:15:09
解决此问题的常用方法是让两个脚本都使用flock()
进行锁定:
$f = fopen('some_file', 'a');
flock($f, LOCK_EX);
fwrite($f, "some_line\n");
flock($f, LOCK_UN);
fclose($f);
这将导致脚本在写入文件之前等待彼此完成对文件的处理。如果你愿意,“不太重要”的脚本可以做到:
$f = fopen('some_file', 'a');
if(flock($f, LOCK_EX | LOCK_NB)) {
fwrite($f, "some_line\n");
flock($f, LOCK_UN);
}
fclose($f);
因此,如果它发现文件中的某些内容很忙,它将不会执行任何操作。
发布于 2009-07-30 22:15:27
看一下flock函数。
发布于 2009-07-30 23:39:18
仅供参考: flock仅适用于*nix,在Windows上不可用
https://stackoverflow.com/questions/1209688
复制相似问题