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