PHP постоянно обслуживает одни и те же данные - PullRequest
0 голосов
/ 28 сентября 2019

Я реализовал счетчик кликов на сайте.Всякий раз, когда я захожу на свой веб-сайт, он не изменит то, что он обслуживает (и номер остается прежним)Ожидаемое поведение состояло в том, что это увеличивало количество кликов, но не увеличивало.

Я думал, что обслуживаемая страница кэшируется в браузере, поэтому я посмотрел некоторые результаты по переполнению стека.В некоторых SO ответах предлагается поставить header("Cache-Control: no-cache, must-revalidate"); для современных браузеров.Это, казалось, заставило страницу полностью перезагрузиться, но число не изменилось.Результат был все тот же.Затем я попробовал на другом устройстве, и он показал тот же номер (счетчик не пошел вверх).Я попытался снова с полностью отключенным кэшированием.Все еще ничего!

Тогда я подумал, что вместо этого страница может быть кэширована на сервере.Я снова посмотрел некоторые результаты на SO, и кто-то предложил clearstatcache();, но это не помогло.

Дальнейшее расследование показало, что запуск php index.php в каталоге работает должным образом.Счетчик увеличился, и содержимое страницы вылилось в консоль.Я обновил страницу в своем браузере (без кеша), и число увеличилось до того, которое вылилось в мою консоль.Но это не увеличилось, когда обновилось последовательно.

Мой код PHP: (index.php)

<?php
clearstatcache(); //tried this but it doesn't help
header("Cache-Control: no-cache, must-revalidate"); //Also doesn't help
$hits = exec("python3 hitsAdd.py"); //Execute a Python Script. 
?>

<!-- [unimportant html] -->

<?php echo "$hits";?>

Код моего Python 3: (hitsAdd.py)

try:
    f = open("hits.txt")
    hits = int(f.read())
    f.close()
except:
    hits = 0

print(hits)

hits += 1
f = open("hits.txt", "w")
f.write(str(hits))
f.close()

hits.txt - это файл, которыйсодержит только номер.Например:

10
...