PHP Увеличение счетной переменной в текстовом файле

Это кажется простым, но я не могу понять.

file_get_contents('count.txt'); $variable_from_file++; file_put_contents('count.txt', $variable_from_file); 

В count.txt есть только одна строка данных, и это счетчик обращений. Есть ли способ сделать это?

Solutions Collecting From Web of "PHP Увеличение счетной переменной в текстовом файле"

 $variable_from_file = (int)file_get_contents('count.txt'); 

Но обратите внимание, что это не потокобезопасно.

Если вы хотите быть уверенным, что никакие приращения не идут без учета (это то, что имеет в виду CodeCaster, скрипт может загружать count.txt, увеличивать его, а другой – делать то же самое, а затем сохранять это, и тогда будет только один шаг а не два), вы должны использовать fopen .

 $fp = fopen('count.txt', 'c+'); flock($fp, LOCK_EX); $count = (int)fread($fp, filesize('count.txt')); ftruncate($fp, 0); fseek($fp, 0); fwrite($fp, $count + 1); flock($fp, LOCK_UN); fclose($fp); 

Это заблокирует файл, не позволяя другим пользователям читать или писать, пока счет увеличивается (что означает, что другим придется ждать, прежде чем они смогут увеличить значение).

Точно так же, как и вы, это должно работать нормально. Просто запишите данные из file_get_contents() и проверьте, были ли обе эти функции успешными.

 $var = file_get_contents('count.txt'); if ($var === false) { die('Some error message.'); } $var++; if (file_put_contents('count.txt', $var) === false) { die('Some error message.'); } 

Это работает для меня, хотя

 $count = intval(file_get_contents('count.txt')); file_put_contents('count.txt', ++$count); echo file_get_contents('count.txt'); 

Есть немного смешнее:

 file_put_contents("count.txt",@file_get_contents("count.txt")+1);