php - PHP 不断提供相同的数据
问题描述
我已经实现了一个网站点击计数器。每当我访问我的网站时,它都不会改变它所提供的服务(并且数量保持不变)。预期的行为是它会增加点击次数,但事实并非如此。
我认为提供的页面被缓存在浏览器上,所以我在 Stack Overflow 上查看了一些结果。建议header("Cache-Control: no-cache, must-revalidate");
为现代浏览器提供一些 SO 答案。这似乎使页面完全重新加载,但数字没有改变。结果还是一样。然后我在另一台设备上尝试了它,它显示了相同的数字(计数器没有上升)。我再次尝试完全禁用缓存。依然没有!
然后我认为该页面可能会缓存在服务器上。我再次查看了一些关于 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
解决方案
推荐阅读
- xamarin - 在共享代码项目和跨平台应用程序之间导航
- java - 铸造泛型类
- c# - 如何从谷歌驱动器中的文件列表生成哈希值
- javascript - 如何从javascript中的对象对象中删除对象
- macos - 通过 SSH 连接到 Google Cloud (GCP) 和 Google Compute Enginge (GCE) 时,命令键 (⌘) 不再起作用
- android - 通过 SSH 和 VNC 通过代理服务器连接 Android 设备
- vue.js - 在 Gridsome/Vue.js 中将变量传递给 GraphQL 查询
- c# - 如何按单元格颜色对 datagridview 进行排序?
- roku - 在视频流期间,我如何获得块?
- javascript - 提供给文本输入预期字符串的类型号的无效道具值反应本机