Счетчик с блокировкой

PHP 11.07.21 11.07.21 286
Бесплатные курсына главную сниппетов

Итак, нам нужен сценарий, который бы при каждом своем запуске увеличивал число, хранящееся в файле, и выводил его в браузер. Простая, казалось бы, задача сильно осложняется тем, что при большой посещаемости сервера могут быть запущены сразу несколько процессов-счетчиков, которые попытаются обратиться к одному и тому же файлу. Если не принять мер, это приведет к тому, что счетчик рано или поздно “обнулится”.

<?php ## Скрипт-счетчик с блокировкой $file = "counter.dat"; fclose(fopen($file, "a+b")); // создаем первоначально пустой файл $f = fopen($file, "r+t"); // открываем файл счетчика flock($f, LOCK_EX); // дальше будем работать только мы $count = fread($f, 100); // читаем значение, сохраненное в файле $count = $count+1; // увеличиваем его на 1 (пустая строка = 0) ftruncate($f, 0); // очищаем файл fseek($f, 0, SEEK_SET); // переходим в начало файла fwrite($f, $count); // записываем новое значение fclose($f); // закрываем файл echo $count; // печатаем величину счетчика ?>

Здесь мы применяем только исключительную блокировку, потому что каждый раз, когда нам надо вывести на экран счетчик, его также нужно и увеличить.

 

на главную сниппетов
Курсы