PHP,计算和显示每日,每周和每月统计数据

时间:2014-02-15 02:52:47

标签: php database caching webpage

我是PHP的新手,因此这更像是一个概念性问题,甚至可能是关于“最佳实践”的问题。

通常,我会看到从其数据库中提取统计数据的网站。例如,假设它是销售线索网站。它可能在页面顶部有统计信息,如:

新的销售业务昨天:123

本月新销售额达到:556

今年的新销售额:3870

显然,每次显示页面时都不应计算这个,对吧?这可能会对服务器造成很大负担?人们如何缓存此类数据。任何最佳做法?我以为我写了一个CRON工作,每天计算它并插入数据库。你有什么想法?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以计算一次,然后将其存储在xcache中。然而,这里似乎没有需要一个cron。查询可以运行一次并将结果存储在xcache中。这里重要的是根据您的用例设置存储值的到期时间。例如。如果您需要存储上述每日统计数据,请将到期时间设置为几小时。如果数据每分钟更新一次,您可以将到期时间设置为几分钟。

像这样。

$newSalesLeadYest;
if(xcache_isset("newSalesLeadYest")){
    $newSalesLeadYest = xcache_get("newSalesLeadYest");
} else{
    $newSalesLeadYest = runQueryToFetchStat();
    //Cache set for X secs
    xcache_set("newSalesLeadYest", $newSalesLeadYest, X);
}

答案 1 :(得分:0)

您需要的是提出缓存策略。 有些因素可以帮助您做出决定:

  • 数据的变化频率如何?
  • 目前的价值有多重要 - 如果是1分钟,1小时,1天的话还可以吗?
  • 加载新数据的时间有多贵?
  • 你得到多少流量? 10s,100s,数百万?

有几种方法可以达到效果。

  • 您可以使用类似memcached的内容来保存数据,以避免每次请求生成数据。
  • 您可以使用http缓存并使用来自API的JavaScript来加载数据客户端。
  • 您可以拥有一名后台工作人员(例如,由cron运行),该工作人员会生成最新数据并保留在查找数据库表中。
  • 您可以改进查询和索引,以便获取实时数据的速度足以完成每个请求
  • 您可以更改数据库架构,以便拥有更多静态数据

从您提供的3个示例中,3个简单的计数应该不足以保证复杂的缓存系统。如果您可以粘贴sql查询,我们可以帮助优化它们。

数据听起来每天只会更新一次,因此一个简单的夜间cron“flatten”查询将是一个不错的选择。