当前位置:  开发笔记 > 编程语言 > 正文

在PHP/MySQL中计算页面视图的最佳方法是什么?

如何解决《在PHP/MySQL中计算页面视图的最佳方法是什么?》经验,为你挑选了5个好方法。

最好的我的意思是效率最高,现在将它放在我的post.php文件中是我唯一能想到的:

$query = mysql_query(" UPDATE posts SET views + 1 WHERE id = '$id' ");

有没有更好的方法,一种消耗更少服务器资源的方法.我问,因为如果这是一个小应用程序我会对上面没有问题,但我正在尝试构建一些将被很多人使用的东西,我希望尽可能地提高查询意识.



1> Kyle Wild..:

如果您对节省资源并仍然使用SQL进行报告感兴趣,并且精确#无关紧要,您可以尝试这样的采样(修改采样率以适合您的比例):

$sample_rate = 100;
if(mt_rand(1,$sample_rate) == 1) {
    $query = mysql_query(" UPDATE posts SET views = views + {$sample_rate} WHERE id = '{$id}' ");
    // execute query, etc
}


我不确定我会效仿,有人可以解释这是做什么的吗?这对我来说没有意义.这有什么用?
@Suyash此代码生成1到100之间的随机数 - IF,并且只有当随机数变为"1"时,保持视图计数的数据库值才会增加100.这背后的一般思路是理论上,它应该花费100次尝试来达到数字'1' - 因此视图计数或多或少是正确的,而不需要不断查询数据库.

2> Kyle Wild..:

如果memcache是​​您服务器环境中的一个选项,这是另一种很酷的采样方式,但也能跟上精确的数字(与我的其他答案不同):

function recordPostPageView($page_id) {
    $memcache = new Memcached(); // you could also pull this instance from somewhere else, if you want a bit more efficiency*

    $key = "Counter for Post {$page_id}";

    if(!$memcache->get($key)) {
        $memcache->set($key, 0);
    }

    $new_count = $memcache->increment($key);

    // you could uncomment the following if you still want to notify mysql of the value occasionally
    /*
    $notify_mysql_interval = 100;
    if($new_count % $notify_mysql_interval == 0) {
        $query = mysql_query("UPDATE posts SET views = {$new_count} WHERE id = '{$page_id}' ");
        // execute query, etc
    }
    */

    return $new_count;
}

并不介意纯粹主义者对单身人士的侮辱.或者你可以将它传递给这个函数,如果你比实用主义者更纯粹:)



3> Kamil Tomšík..:

恕我直言最好的解决方案是将views_count存储在内存(memcached,无论如何)中,并在内存中进行更新.(当然更新必须同步)

然后你可以使用cron脚本将这些值推送到db.(经过一段时间 - 秒,分钟,等等.)



4> 小智..:

您还可以检查这些代码行。我认为这会有所帮助,因为您只需一个文本文件就可以实现您的目标。它不需要任何数据库活动。




5> pradip kor..:

在数据库中,只有一列ip定义了主键,然后使用以下PHP代码将ip存储在数据库中:

连接文件:


PHP文件:


显示数量:


使用此方法在数据库中存储所有服务器ip

注意:只有服务器ip可以存储或计数设备ip

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有