过去一个小时我一直在思考这个问题,但无法真正弄清楚出了什么问题。
这是我用来调试问题的代码。
监控.php
$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;
储物柜.php
$fp = fopen("lock.txt", "r+");
sleep(60);
为了查看flock是否正常工作,我首先运行locker.php,以便该文件将被锁定60秒,然后我尝试运行monitor.php以查看是否可以获得锁定。
对于独占锁和共享锁,我都得到 TRUE
。
会出现什么问题?
解决方案:假设打开文件会锁定它。锁定器应该发出一个集群来锁定文件。
匆忙中错过了那部分。截止日期。截止日期:)
最佳答案
locker.php 未锁定文件。打开文件不会锁定它。 flock
是一个协作咨询锁定系统。所有各方都需要参与其中并使用flock
来锁定和/或检查锁定。除非locker.php明确flock
文件,否则它不会被锁定。
关于php - flock() 总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30097487/