实时网站的自动数据库更新
Posted
技术标签:
【中文标题】实时网站的自动数据库更新【英文标题】:Automatic database updates for real-time website 【发布时间】:2013-05-25 08:40:45 【问题描述】:我正在尝试构建一个网站,该网站将显示来自另一个网站的 XML 提要的实时(或接近它的)数据。我知道如何使用 jquery、AJAX 和 php 定期(每 1 到 3 秒)从 mysql 数据库中提取数据,我遇到的问题是弄清楚如何使用新的 XML 更新数据库本身每 1 或 2 秒数据。我还需要保留所有数据的历史记录。
我能够编写一个 PHP 脚本来获取 XML 数据并更新数据库就好了,但是我不知道如何安排这个脚本在没有任何用户启动的情况下每秒运行一次。到目前为止,我的研究已将我指向 cron,但我的主机不提供它,而且它似乎不适合如此频繁的更新。我也不知道 PHP 是不是最好的方法。
任何想法或指示将不胜感激,我不介意研究实现的细节,但我什至不知道如何有效地用谷歌搜索我的问题。
【问题讨论】:
XML 提要真的每隔几秒就改变一次吗?多久请求一次显示此数据的网页?显示最新数据真的很重要吗? @MikeBrant:XML 提要确实每秒都在变化,但这只是值;文件没有变大。它是商品价格的馈送,并且始终存在相同的 10 种商品列表,价格每秒都在变化。我可以忍受最多每 3 或 4 秒刷新一次,因为我正在构建的网站包含一个互动游戏,人们可以在其中“赌”(不是真钱)价格波动。 【参考方案1】:与其安排如此频繁的更新,不如考虑存储上次更新时间的时间戳并仅在您所需的时间间隔已过时更新。
您也可以考虑使用锁定方案,以确保在另一个线程已在执行更新的过程中不会启动新的更新。
【讨论】:
【参考方案2】:这个请求有多种解决方案。
最简单的一种是使用外部服务,例如
http://www.webcron.org/online-cron
它可以每分钟运行一次。因此,您可以获取尽可能多的数据,并在将数据插入数据库时对其进行缓存。 但如果你不想花钱,你应该去别的地方。
另一种方法是创建一个 PHP 递归函数,一个一旦开始就永远不会结束的循环。 因此,在循环在您的目标网站上找到数据之前,它将继续运行。这意味着您只需启动循环一次。 请确保不要回显任何内容,否则一旦您离开页面,循环就会停止。
另外,您可能需要对 PHP 进行一些技巧。
也检查http://php.net/manual/en/function.ignore-user-abort.php
希望对你有帮助
【讨论】:
以上是关于实时网站的自动数据库更新的主要内容,如果未能解决你的问题,请参考以下文章
怎么使用 JavaScript 将网站后台的数据变化实时更新到前端
用 JavaScript 将网站后台的数据变化实时更新到前端