从PHP脚本随机生成的内容在重新加载时没有刷新。

11 浏览
0 Comments

从PHP脚本随机生成的内容在重新加载时没有刷新。

我正在尝试实现一个网站,每次刷新页面时都会显示一张随机的图片。

目前,所有的图片都存放在一个名为“/pngs/”的目录中,我有一个带索引行的MySQL数据库:





...

然后,在HTML中:


引用了一个PHP脚本,该脚本从数据库中选择一行随机数据:

connect_error) die($conn->connect_error);
  $query  = "SELECT * FROM pngs";
  $result = $conn->query($query);
  if (!$result) die($conn->error);
  $rows = $result->num_rows;
  $r = rand(1,$rows);
  $result->data_seek($r);
  $row = $result->fetch_array(MYSQLI_ASSOC);
  echo $row['png'];
  $result->close();
  $conn->close();
?>

目前,在本地Apache Web服务器上运行时,这个方法在所有浏览器中都运行得很好。然而,当从实际网站上传并运行时,图片在刷新时保持不变。

清除缓存并刷新页面会产生预期的效果,所以这可能是一个缓存问题。我尝试了各种清除缓存和禁用缓存的方法,但都没有起作用。

有一种想法是,也许PHP脚本只运行一次,然后将结果存储在缓存中?那么我应该如何强制每次刷新时都运行PHP脚本呢?

另一个想法是,也许使用JavaScript来显示随机图片会是一个更简单和更好的解决办法?如果确实如此,我愿意做出改变。

非常感谢任何建议,我是一个相对新手。

谢谢。

编辑

谢谢你们的回复,图像缓存的解决方法解决了图像的问题。

然而,最初的问题更普遍,类似地也会出现在文本中。

例如,如果我使用一个带索引行的MySQL数据库的文本:

"要显示的第一段文字。"
"要显示的第二段文字。"
"要显示的第三段文字。"
"要显示的第四段文字。"

如果我使用与上面类似的PHP脚本,初始时显示的文本是正确随机的,但当刷新页面时文本保持不变。

所以,我的问题更普遍:如何确保每次刷新都执行PHP/MySQL查询,而不是缓存第一个结果并重复显示?

编辑 2

对不起,又进行了进一步的编辑,现在不确定是否应该发起一个新问题...

所以,我可能误解了PHP/MySQL基础架构的工作方式...

预期功能:每次页面查看都从MySQL数据库返回不同的结果,每次刷新都会为每个用户提供不同的图片/文本。

当前功能:每次页面查看都从MySQL数据库返回相同的结果,途中会更新,但每隔几分钟才更新一次,而不是每次刷新。显示的结果在不同用户之间是相同的,意味着PHP脚本/MySQL查询是在服务器端进行的,而不是为每个用户唯一执行的。

考虑到可能选择了错误的基础架构来实现预期的结果,现在考虑尝试使用JavaScript来实现。

0
0 Comments

问题的原因是PHP脚本生成的随机内容在刷新页面时不会更新。解决方法是使用MySQL查询的ORDER BY RAND()语句来实现随机排序。

下面是具体的解决方法:

1. 在MySQL查询中使用ORDER BY RAND()语句来实现随机排序。

SELECT * FROM `pngs` ORDER BY RAND();

这将执行查询并随机返回结果。

2. 将上述查询语句嵌入到PHP脚本中,以获取随机内容。例如:


通过以上方法,PHP脚本将在每次刷新页面时都生成随机内容,并且内容会随着刷新而更新。这样可以解决随机内容不刷新的问题。

0