RussianPenguin
9/26/2018 - 12:06 PM

Чтение\запись с блокировкой

Чтение файла в отдельном потоке с блокировкой его для избежания конкуренции с другими процессами.

<?php

$fp = fopen(__DIR__ . DIRECTORY_SEPARATOR . "counter.txt", "c+"); 
// я не ошибся. именно c+ - открытие на чтение и запись или создание и открытие на чтение и запись

if (flock($fp, LOCK_EX)) {
   $data = (int) fgets($fp);
   ftruncate($fp, 0);
   fwrite($fp, $data + 1);
   fflush($fp);
} else {
   throw new \Exception('Counter error');
}

fclose($fp);