Сделал элементарный подсчёт просмотров страниц:
$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']);
А еще лучше использовать БД, где все блокировки уже реализованы
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Поставил CMake (без CLang), добавил в переменную path путь к cmake-39
}
Увидел сейчас, что в 17ом стандарте появилась новая шаблонная функция std::invokeОчень сильно обрадовался, т