Сделал элементарный подсчёт просмотров страниц:
$cache = json_decode(fgets(fopen('/home/user/site.com/assets/cache.tmp', 'r')), true);
//добавляем к количеству счетчика +1
$cache['counter'][$_POST['type']] = strval($count = $cache['counter'][$_POST['type']] +1);
fwrite(fopen('/home/user/site.com/assets/cache.tmp', 'w'), json_encode($cache));
Но дело в том что число раз в день не по понятным мне причинам сбрасывается. Изначально было 4700000 (взято из прошлых данных). Сегодня в обед захожу и вижу такое содержимое файла:
{"counter"
:{
"ch":"41"}
}
А должно быть ch: ~4702930
Укажите пожалуйста в чем это может быть проблема? Из-за большого числа? - Так вроде же перевёл в strval.
Вероятнее всего, при чтении файла происходят ошибки, которые вы не проверяете. В результате переменная $cache у вас получается пустой.
Попробуйте такой код
function inc_counter($file_name, $type) {
$data = file_get_contents($file_name);
if ($data === false)
return false;
$json = json_decode($data, true);
if ($json === null)
return false;
$json['counter'][$type]++;
$data = json_encode($json);
if ($data === false)
return false;
return file_put_contents($file_name, $data, LOCK_EX) !== false;
}
inc_counter('/home/user/site.com/assets/cache.tmp', $_POST['type']);
А еще лучше использовать БД, где все блокировки уже реализованы
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости