gpt4 book ai didi

php - 如何从 PHP 中的 MySQL 数据库中提取 'Today' s 特色文章?

转载 作者:行者123 更新时间:2023-11-29 04:55:33 25 4
gpt4 key购买 nike

如何使用 PHPMySQL 制作“今日精选文章”系统?

每天,当用户第一次访问该站点时,我需要从数据库中随机选择一篇文章,该文章将在一整天内供每位访问该站点的用户使用。这将在没有管理员干预的情况下发生,因此脚本将由访问的用户触发。

据我所知,当用户在新的一天第一次访问该页面时,脚本会随机(或以其他方式)选择一篇文章,然后在数据库中标记它,同时取消标记该文章从前一天开始。但是,如果两个用户同时访问同一个页面怎么办?这可能意味着将同时标记两篇文章!

您如何应对时区问题?

最佳答案

我会做的是:

  • 在午夜 UTC 运行 cron 作业。 You can write offline cron jobs in PHP.
  • 随机选择一篇文章 ID。这可能需要几秒钟 depending on how you do it ,因此最好在离线作业中执行此操作,而不是在任何用户的 PHP 请求期间执行此操作。
  • 从文章中生成 HTML 片段,例如带有“阅读更多...”链接的文章介绍。当然要小心创建包含 XSS vulnerabilities 的 HTML .
  • 将 HTML 片段存储在 memcached 中在已知 key 下。

然后当访问者访问该站点时,他们的页面 View 只是从 memcached 中提取 HTML 片段并直接在页面中输出。午夜时分,HTML 片段自动更改,下一个 PHP 请求获取新保存的文章。

由于 cron 作业是唯一选择随机文章的代码,它不会与任何其他代码同时运行,因此不需要锁定。

没有运行内存缓存?习惯它。 Web 应用程序架构需要一些明智的、特定于应用程序的缓存,而 memcached 是最好的解决方案。

关于时区,简短的回答是对所有内容使用 UTC。有关更多详细信息,请收听 OurSQL Podcast episode 46: It's About Time .

关于php - 如何从 PHP 中的 MySQL 数据库中提取 'Today' s 特色文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com