gpt4 book ai didi

php - LOCK_SH 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 12:27:03 25 4
gpt4 key购买 nike

我正在研究 PHP 中的 flock 机制,但我很难理解 LOCK_SH 模式的功能。我在一个网站上读到它锁定了文件,因此其他脚本无法写入其中,但他们可以从中读取。但是,以下代码似乎没有按预期工作:在 file1.php 中,我有:

$fp = fopen('my_file.txt','r');

flock($fp, LOCK_SH);
sleep(20);
flock($fp, LOCK_UN);

在 file2.php 中我有

$fp = fopen('my_file.txt','a');
fwrite($fp,'test');

我运行第一个脚本将文件锁定 20 秒。锁定到位后,我运行 file2.php,它立即完成执行,之后,当我打开“my_file.txt”时,字符串“test”被附加到它(尽管“file1.php”仍在运行)。我尝试更改“file2.php”,以便它可以从锁定的文件中读取并从中读取红色,没有任何问题。所以显然……'LOCK_SH' 接缝处什么都不做。但是,如果我使用 LOCK_EX 是的,它会锁定文件,没有脚本可以写入或读取文件。我正在使用 Easy PHP 并在 Windows 7 下运行它。

最佳答案

LOCK_SH means SHARED LOCK. Any number of processes MAY HAVE A SHARED LOCK simultaneously. It is commonly called a reader lock.

LOCK_EX means EXCLUSIVE LOCK. Only a single process may possess an exclusive lock to a given file at a time.

If the file has been LOCKED with LOCK_SH in another process, flock with LOCK_SH will SUCCEED. flock with LOCK_EX will BLOCK UNTIL ALL READER LOCKS HAVE BEEN RELEASED.

http://php.net/manual/en/function.flock.php#78318

关于php - LOCK_SH 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com