Php flock()总是返回真值
这件事已经过去一个小时了,我真的搞不清楚到底出了什么问题 这是我用来调试问题的代码 Monitor.phpPhp flock()总是返回真值,php,flock,Php,Flock,这件事已经过去一个小时了,我真的搞不清楚到底出了什么问题 这是我用来调试问题的代码 Monitor.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; locker.php $fp = fopen("lock.txt", "r+"); sleep(60);
$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
$fp = fopen("lock.txt", "r+");
sleep(60);
为了查看flock是否正常工作,我首先运行locker.php,这样文件将被锁定60秒,然后尝试运行monitor.php以查看是否可以获得锁定
我得到了独占锁和共享锁的TRUE
有什么问题吗
解决方案:假设打开文件会将其锁定。储物柜应发出一个群组来锁定文件。
匆忙中错过了那部分。截止日期。截止日期:)locker.php未锁定文件。打开文件不会锁定它
flock
是一种合作咨询锁定系统。所有各方都需要参与,并使用flock
锁定和/或检查锁定。除非locker.php显式地flock
s文件,否则它不会被锁定。在php(和许多UNIX系统)下,flock
是建议性的,这意味着所有想要使用该文件的进程都必须使用锁定。那些不这样做的进程仍然可以对文件执行任何操作,并且不会阻止其他进程获得锁
您的locker
程序应同时打开和锁定文件,例如:
$fp = fopen("lock.txt", "r+");
$var=flock($fp, LOCK_SH | LOCK_NB);
sleep(60);
哦,我真傻+1,并将被评为最佳答案。