使用codeigniter访问存储到文件的计数器

时间:2012-12-08 19:00:32

标签: php codeigniter file-io

嗨我想知道如何只做一个简单的访问计数器,将信息存储到一个文件格式可能是这样的:Date | #访问,这只是我在这里尝试做的一个POC,没有什么复杂的,我只是想用这个框架。

我尝试使用file helperstring helper来读取文件,然后减去日期或拆分内容并使用循环迭代并更新当前日期

这是迄今为止的代码......

命名空间库;

class VisitCounter {

    function __construct() {
        $this->load->library('file');
        $this->load->helper('string');
    }

    function trackVisit(){
        $file= read_file('./visits.txt');

        if ( ! write_file('./visits.txt', $file)){
            echo 'Unable to write the file';
        }
    }
}

任何想法,我需要知道如何分割字符串或者有人有更好的方法。

3 个答案:

答案 0 :(得分:2)

我为此创建了一个模型:

class Count_model extends CI_Model{

    function __construct(){
        parent::__construct();
    }

    function increment(){
        $this->db->set('total', 'total+1', FALSE);
        $this->db->update('count');
    }

    function get_total(){
        $query = $this->db->get('count');
        if($query->num_rows()>0){
            $row = $query->row();
            return str_pad($row->total, 6 , "0", STR_PAD_LEFT);
        } else {
            return FALSE;
        }
    }

}

继承人的结构:

CREATE TABLE IF NOT EXISTS `count` (
  `total` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`total`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

答案 1 :(得分:1)

我认为最简单的解决方案是使用数据库。

无论如何,如果要写入文本文件,可以使用serialize将数组转换为可以保存到文件中的字符串,并使用unserialize将字符串转换回一个数组。

答案 2 :(得分:0)

这是对我有用的代码:

function increment($id){
    $this->db->set('page_opens', 'page_opens+1', FALSE);
    $this->db->where('id', $id);
    $this->db->update('page');
}