使用PHP / MySQL显示某些统计信息的最有效方法

时间:2010-11-19 12:26:59

标签: php mysql cron scheduled-tasks

我需要在我们网站的首页上显示一些基本的统计数据,比如博客,成员和一些计数 - 所有这些都是基本查询。

我更喜欢找到运行这些查询的方法,每隔30分钟说出并存储输出,但我不确定最佳方法,我真的不想使用cron。基本上,我不想每天进行数千次查询才能显示这些结果。

关于此类功能的最佳方法的任何想法?

提前致谢

5 个答案:

答案 0 :(得分:4)

不幸的是,cron是更好,更可靠的解决方案。

  

Cron 是类Unix计算机操作系统中基于时间的作业调度程序。 cron这个名字来自“chronos”这个词,希腊语来自“时间”。 Cron使用户能够安排作业(命令或shell脚本)在特定时间或日期定期运行。它通常用于自动化系统维护或管理,但其通用性意味着它可以用于其他目的,例如连接到Internet和下载电子邮件。

如果要将输出存储到磁盘文件中,
你可以随时检查filemtime是否小于30分钟,
在继续重新运行昂贵的查询之前。

答案 1 :(得分:1)

使用cron在某处存放这种东西没有任何问题 如果您正在寻找更复杂的缓存方法,我建议您阅读memcachedAPC,这可以为您的问题提供解决方案。

答案 2 :(得分:0)

Cron Job是我认为可行的最佳方法。

答案 3 :(得分:0)

你有很多人这样做,我认为好的不是最好的,你可以将你的数据存储在桌子上并每30分钟显示一次。使用函数sleep()
我建议你看一下wordpress博客系统,特别是插件BuddyPress ..

前段时间我做了同样的事情,每次有人加载页面时,查询都会完成工作并从数据库中检索信息,我记得这很像

SELECT COUNT(*) FROM my_table

我收到了我的帖子数量。

无论如何,有这么多方法。祝你好运。

别忘了cron总是你最好的朋友。

答案 4 :(得分:0)

使用cron是解决问题的最简单方法。

不使用cron的一个很好的理由 - 即使没人会请求它们,你也会产生统计数据。

根据生成数据所需的时间长度(您可能希望跟踪以前的计数,只需添加时间戳大于上一次运行的计数 - 使用适当的索引!)然后您可以触发此当一个请求进来并且数据看起来好像是陈旧的时候。

请注意,您应该将数据保留在数据库中,并考虑如何实现互斥锁以避免多个请求同时尝试更新缓存。

然而,正确的解决方案是在每次添加记录时更新统计信息。除非你的流量非常大,否则开销会很小。虽然'SELECT count(*)FROM some_table'会很快运行,但如果您不想简单地计算表中的所有行(例如,如果博客和回复是在同一张桌子上)。实际上,如果您要将stats更新实现为相关表的触发器,那么您就不需要对PHP代码进行任何更改。