【问题标题】:Warning: flock(): "Illegal operation argument" with LOCK_NB警告:flock():带有 LOCK_NB 的“非法操作参数”
【发布时间】:2019-10-08 10:21:36
【问题描述】:

当我尝试使用flock从文件中读取数据以检查文件锁是否被释放以读取时,我做错了什么?

我收到警告:flock(): "Illegal operation argument"

function SafeReadContent($file, $t = 500, $limit = 1000){
  $fp = fopen($file, "r");
  flock($fp, LOCK_NB); // This line can be removed. It for test only.
  while ( ! flock($fp, LOCK_NB) ) {
    echo "Read data performed. ";
    $str = file_get_contents($file, FILE_IGNORE_NEW_LINES ); 
    usleep($t); // read/write 128kb ~ < 0.5ms
    $s++;
    if ($s==$limit) // force break
      break;
  }
  return $str;
}

【问题讨论】:

    标签: php flock


    【解决方案1】:

    您不能单独使用 LOCK_NB。 LOCK_NB 必须与操作一起使用。例如

    if(!flock($fp, LOCK_EX | LOCK_NB)) {..
    

    【讨论】:

    • 第二个问题是关于使用LOCK_EX和Barmar,472k宣称第二个脚本的读取过程将等待(不调用本例中使用的while循环......至少这是我理解他的方式词。
    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多