Предупреждение: flock (): «Аргумент недопустимой операции» с LOCK_NB - PullRequest
0 голосов
/ 08 октября 2019

Что я делаю неправильно, когда я пытаюсь прочитать данные из файла, используя flock, чтобы проверить, снята ли блокировка файла для чтения?

Я получил предупреждение: flock (): "Аргумент недопустимой операции"

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;
}

1 Ответ

1 голос
/ 08 октября 2019

Вы не можете использовать только LOCK_NB. LOCK_NB должен использоваться вместе с операцией. например,

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