统计高流量缓存站点的页面浏览量

时间:2011-07-08 作者:James Bruce

我们的站点流量很大,我们使用nginx和w3总缓存来处理负载。我们以前一直使用wp postwiews来计算页面浏览量,但现在它似乎锁定了posteta表,并且通常根本不计算浏览量。充其量也不可靠。

有没有人能为我们提供一种计算页面浏览量并将其放入数据库的方法,或者任何具体可行的解决方案?

我最初的想法是通过javascript进行视图计数,以更新一个单独的数据库,然后在每天结束时进行cron作业以合并结果,但我不确定从何处开始。

提前感谢

3 个回复
最合适的回答,由SO网友:anu 整理而成

这真的取决于你需要查看什么计数-如果只是为了查看流量统计数据,那么就使用Google Analytics或任何基于javascript tracker的分析工具。

如果您需要集成页面视图计数和按视图排序的功能,那么您可以

花一些时间优化您的数据库-一些需要考虑的选项和事项将Posteta表更改为InnoDB,以获得一个单独的数据库服务器确保您已经调整了MySQL设置(使用mysqltuner作为起点)

  • 使用Piwik之类的东西,并花时间将其与WordPress集成(它有一个不错的API)

  • SO网友:onetrickpony

    假设有一个内存缓存扩展处于活动状态,下面是如何操作的:

    (我将使用APC 这里举个例子,因为它将与PHP 6捆绑在一起)

    // set this to the current post id
    $post_id = get_the_ID();
    
    // this will attempt to get the post view count from cache (the memory)
    $page_views = apc_fetch("post_{$post_id}_views");
    
    // if it exists, increase the counter (again, only in memory)
    if($page_views !== false){
      $page_views = apc_inc("post_{$post_id}_views");
    
      // write the data to the database every ...let\'s say 100 views
      if(($page_views % 10) == 100)
        update_your_database_here();
    }
    
    // doesn\'t exist; most likely this is the first view, so create the cache entry
    else{
      apc_store("post_{$post_id}_views", 1);
      $page_views = 1;
    }
    
    // show it
    printf(\'This post has %d views\', $page_views);
    
    您可以选择使用WP的函数—WP\\u cache\\u incr()或WP\\u cache\\u decr()+W3TC,并选择APC。但就我个人而言,我会避免使用任何缓存插件,并创建自己的对象缓存处理程序,我可以将其放在wp内容目录中。

    您也可以使用xcache来实现这一点,这无关紧要——其思想是您需要将计数存储在内存中,直到某一点,以避免任何磁盘写入。由于您的站点流量很大,我假设您拥有一台专用服务器,您可以在该服务器上安装自己的PHP扩展等。由于明显的原因,共享主机不允许您在内存中缓存数据。。。

    SO网友:scribu

    只需使用谷歌分析或wp。com统计。

    在已经解决的问题上浪费时间是不值得的。

    结束

    相关推荐

    GPL and plugins

    插件开发中心说:“您的插件必须与GPLv2兼容。”。但我发现Topsy插件在GPLv3下。http://www.gnu.org/licenses/rms-why-gplv3.html 声明GPLv2和GPLv3不兼容。那么这应该被允许吗?我想使用Topsy插件中的一些代码。那么,我应该在GPLv2或GPLv3下发布插件吗??