需求是这样的,我有一个首页,浏览器端访问时,返回的数据从配置文件就可以取出来,不需要连接数据库。
这个首页访问量比较大,想提高访问的速度。
但在这个首页,我想保存浏览器端的信息,如访问的IP,时间等等。
我不想在每次访问这个首页就把信息保存到数据库,而是想达到一个量后再一次性存入数据库。再把计数器清零,缓存清零。再累加,循环下去。
请达人给个方案。

解决方案 »

  1.   

    我的理解是你需要一个延迟写入的实现.
    #web端接口
    <?php
    #数据写入
    function example_lazy_write($key, $data) {
        example_cache($key, $data);
        #log_data($key, $data); 将数据写入文件
    }
    #数据读取
    function example_read($key) {
        if(false === ($data = example_cache($key))) {
            #从数据库读取
        }
    }
    #缓存操作接口
    function example_cache($key, $data = null) {
        if(isset($data)) {
            #写入缓存
        } else {
            #从缓存读取
        }
    }
    ?>
    #另外需要一个常驻进程
    <?php
    #数据持久化到DB
    function example_persist($filename) {
        #读文件, 一次写入DB
    }
    ?>
      

  2.   


    可以的。得看你的内存跟你要存的数据量。100M=102400K=104857600B自己掂量一下就可以了。。
      

  3.   

    #另外需要一个常驻进程
    <?php
    #数据持久化到DB
    function example_persist($filename) {
        #读文件, 一次写入DB
    }
    -----------------------------
    请问哈 常驻内存怎么实现?
      

  4.   

    楼主可以把记录浏览器信息的服务器和访问服务器分离部署,访问服务器可以前端设置squid来建立缓存,或者直接在apache上面配置mod_expire模块,浏览器端的信息可以通过js的ajax或者用一个图片请求发送浏览器信息给记录ip等用户信息的服务器,每晚定时分析记录浏览器信息的服务器上的请求日志,从里面提取出相应的用户信息,比如ip等,量小的话存到mysql中,量大可以考虑infobright这种数据仓库
      

  5.   


    对于PHP的应用, 为了代码的复用, 降低开发成本, 通常都是用PHP开发的.
    一个最简单的例子就是
    <?php
    while($i ++ < 100) {
        echo 'Hello ' . $i . chr(10);
        sleep(1);
    }
    ?>
    假设上述代码存档到文件/home/xxx/test.php中, 并假设你的php可执行文件在/usr/local/bin/php, 那么就可以在终端使用/usr/local/bin/php /home/xxx/test.php &让它后台方法运行(linux环境)当然, 常驻进程需要完成实际的任务, 以你的问题, 可以这样解决<?php
    define('RUN_FLAG',        'run');
    $GLOBALS[RUN_FLAG]        = true;    #为了程序中可以控制退出. 更好的方式是使用信号控制
    while($GLOBALS[RUN_FLAG]) {
        work_func();
        usleep(1000);    #任务执行间隔, 让它休息下.
    }
    function work_func() {
        #读文件
        #分析要持久化的内容
        #持久化
        #更新文件
    }
    ?>
    当然, 如果你期望你的这个常驻进程工作更加理想, 那可能需要增加一些进程控制相关的代码, 可以看看PHP的pcntl扩展.
      

  6.   

    +1
    <script type="text/javascript" src="http://your.domain.com/stat.php"></script>
    在stat.php
    加入
    header('Content-type: application/x-javascript');
    //不缓存
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Pragma: no-cache");