首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flock()总是返回true

flock()总是返回true
EN

Stack Overflow用户
提问于 2015-05-07 09:48:58
回答 2查看 485关注 0票数 2

在过去的一个小时里一直在讨论这件事,却不知道到底出了什么问题。

这是我用来调试问题的代码。

Monitor.php

代码语言:javascript
复制
$fp = fopen("lock.txt", "r+");
$var=flock($fp, LOCK_EX | LOCK_NB);
var_dump($var);
$var=flock($fp, LOCK_SH | LOCK_NB);
var_dump($var);
exit;

locker.php

代码语言:javascript
复制
$fp = fopen("lock.txt", "r+");
sleep(60);

为了查看flock是否正常工作,我首先运行locker.php,这样该文件将被锁定60秒,然后尝试运行monitor.php以查看是否可以获得一个锁。

我为独占锁和共享锁获得TRUE

会有什么问题?

解决方案:假设打开文件将锁定它。储物柜应该发出一个群集来锁定文件。

匆忙错过了那部分。Deadlines.Deadlines :)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 09:54:31

locker.php是,不锁定文件。打开文件不会锁定它。flock是一种协同咨询锁定系统。所有各方都需要参与其中,并使用flock锁定和/或检查锁。除非locker.php显式地对文件进行flock,否则它不会被锁定。

票数 3
EN

Stack Overflow用户

发布于 2015-05-07 09:55:32

在PHP (和许多UNIX系统)中,flock是咨询的,这意味着所有想要使用该文件的进程都必须使用锁定。那些不可以做任何他们想要的文件,不会阻止其他进程获得锁。

您的locker程序应该同时打开和锁定文件,例如:

代码语言:javascript
复制
$fp = fopen("lock.txt", "r+");
$var=flock($fp, LOCK_SH | LOCK_NB);
sleep(60);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30097487

复制
相关文章

相似问题

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