正在创建命中计数器


Creating hit Counter

我正在尝试为我的网站创建一个点击计数器,我已经为它开发了以下代码。我只在Codeigniter的主页主控制器中包含了以下代码。

起初我认为代码运行良好,但我发现如果我不继续浏览页面,然后再转到主页,它就不会更新数据。我的意思是:例如:如果我第一次进入主页,它会更新数据,但10秒后,如果我刷新页面,它不会更新数据。但如果我持续刷新它10秒,它就会起作用。

所以你能告诉我如何让它更新数据而不必继续浏览页面或刷新主页吗?

谢谢:)

function __construct() {
    parent::__construct();
    // Visitor Counter
    if (!$this->session->userdata('timeout')) {
        $out = time() + 10; // I will change it to $out = time() + 60*60; later 
        $this->session->set_userdata('timeout', $out);
        mysql_query("UPDATE cane_visitor_counter SET visitor_stat = visitor_stat+1 
              WHERE id = '1'");
    } else {
        $timeout_time = $this->session->userdata('timeout');
        if (time() > $timeout_time) {
            $this->session->set_userdata(array('timeout' => ''));
            $this->session->sess_destroy();
        }
    }
}

编辑

我试图实现的是,当用户第一次访问网页时,我想更新我的数据库。在10秒内(例如目的),如果访问者再次访问主页,数据库将不会更新。但10秒钟后,如果他再次访问主页,我想更新我的数据库。

感谢:)

您的代码显示"如果会话中没有超时,请更新计数"。你想让它说"如果会话中没有超时,或者有,但它是旧的,更新计数"。

function __construct() {
    parent::__construct();
    // Visitor Counter
    if (!$this->session->userdata('timeout') || $this->session->userdata('timeout') < time()) {
        $this->session->set_userdata('timeout', time() + 10);
        mysql_query("UPDATE cane_visitor_counter SET visitor_stat = visitor_stat + 1 WHERE id = 1");
    }
}   

我不是CodeIgniter用户,所以我假设您正确使用了它的会话设施;我只是用同样的方法。