Как читать и писать в файл, гарантируя, что файл заблокирован?

Я рассчитываю увеличить содержимое файла, если последний раз файл был изменен в течение 24 часов, в противном случае сбросьте содержимое файла до 1. Однако я хочу убедиться, что это продолжает работать, независимо от того, сколько пользователей посещают сценарий одновременно ( Скрипт всегда нужно будет выполнять, но убедитесь, что он не перезаписывает / не вычисляет неправильно — я считаю, что именно здесь используется flock).

Пожалуйста, смотрите ниже код:

$host_limit = 50;
$file = 'timer.txt';
$fh = fopen($file,'r+');
if (flock($fh,LOCK_EX)) {
$content = fgets($fh);
//FILE HAS NOT BEEN MODIFIED IN LAST 24 HOURS
if (strtotime('-24 hours') > filemtime($file)) {
$content = 1;
} else {
$content = ($content + 1);
}
fwrite($fh, $content);
fflush($fh);
flock($fh,LOCK_UN);
}
fclose($fh);

if ($content < $host_limit) {
//do stuff
}

Будет ли вышеуказанное работать так, как мне хотелось бы (поскольку у меня нет способа смоделировать то, что я ожидаю проверить)?

2

Решение

Вместо того, чтобы использовать fopen и fwrite, вы можете использовать
file_get_contents ($ файла);
а также
file_put_contents ($ file, $ content, LOCK_EX);

Проверьте руководство:

http://php.net/manual/en/function.file-get-contents.php

http://php.net/manual/en/function.file-put-contents.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector