Это кажется простым, но я не могу понять.
file_get_contents('count.txt'); $variable_from_file++; file_put_contents('count.txt', $variable_from_file);
В count.txt
есть только одна строка данных, и это счетчик обращений. Есть ли способ сделать это?
$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);