当前位置: 首页 > 知识库问答 >
问题:

在PHP中解锁文件会在不应该的情况下返回true?

林英朗
2023-03-14

在PHP中,我使用flock创建了一个建议锁,如下所示:

$fileHandle = fopen($filePath, 'c');
flock($fileHandle, LOCK_EX | LOCK_NB);

在另一个进程中运行相同的代码将随后失败,因为锁是独占的。但是第二个进程能够运行:

$fileHandle = fopen($filePath, 'c');
flock($fileHandle, LOCK_UN); // returns true

但该文件仍被锁定,这已通过运行第三个进程确认。那么为什么解锁请求返回true呢?

共有1个答案

祁正阳
2023-03-14

虽然关于flock()的PHP手册页面在这方面似乎含糊不清,但我建议返回true是因为函数成功执行,而不是因为任何文件被成功锁定或解锁。

还请注意,PHP手册页面显示了很多关于此函数的注意事项,我甚至建议挖掘一个替代例程来锁定对文件的访问。

 类似资料:
  • 问题内容: 我想将实时生产数据库复制到本地开发数据库中。有没有一种方法可以不锁定生产数据库? 我目前正在使用: 但是它在运行时锁定每个表。 问题答案: 该选项有效吗? 根据手册页,如果要转储InnoDB表,则可以使用以下选项: 对于 innodb DB :

  • 问题内容: 我有一个适用于Django应用的命令行Python API。当我通过API访问该应用程序时,它应该返回JSON,而在浏览器中它应该返回HTML。我可以使用不同的URL访问不同的版本,但是如何只用一个模板在views.py中呈现HTML模板和JSON ? 要呈现HTML,我将使用: 但是如何在不放置JSON模板的情况下对JSON做同样的事情?(应为而不是) 什么将决定JSON和HTML输

  • 在C语言中,我可以用和调用来创建新文件,当且仅当当前没有同名文件时。我还没能在哈斯克尔找到这样做的方法。我更喜欢提供的友好的东西,最好是为我完成所有棘手的异常处理。(我不一定期望它能正确地为我完成,但那是另一回事。)

  • 问题内容: java.lang.Math#min(double,double): 在那种情况下可以退货?NaN 似乎是在什么时候,但我无法想象一个例子。你能提供一个吗? 问题答案: 一个简单的例子是 BTW Double.compare()确实将NaN视为相等 对于多个线程,这对于任何类型和值都是可行的。例如

  • 在哪种情况下可以返回?好像是是NaN的时候,但是我想像不出一个例子。你能提供一个吗?