我有一个论坛,一直开着,最近改版之后,很多人都说论坛页面出错了,但是我这里显示都很正常!自己就像写一个可以记录访问者的一些信息
如:
编号:XXXX   IP:1.1.1.1 浏览器:IE   访问次数:XXX每个不同的IP访问都会新生产一行,不会重复一直一行生成,自己能力有限!希望能帮忙的哥们帮忙一下哈!
大家尽力!

解决方案 »

  1.   

    结贴率太低了……WEB服务器的日志没有么?php用文件记录,你首要解决的是,怎么在并发较高的状态下完整记录加文件锁LOCK_EX 会不会等待的问题至于具体的信息,大部分$_SERVER里都有
      

  2.   

    访问次数,对于游客,大概也只能用cookie了
      

  3.   

    我不太懂这东西,用什么方法可以完成这个
    编号:XXXX IP:1.1.1.1 浏览器:IE 访问次数:XXX
      

  4.   

    可以用db 来存储。
    用户打开网站就保存到数据库,ip,时间,浏览器,等等。
    就像做一个 log
    不难啊。
      

  5.   

    quote:每个不同的IP访问都会新生产一行,不会重复一直一行生成有个细节你没说清楚,你那个访问次数是记录总的访问次数,还是某一个ip的访问次数?
    总的访问次数你事后统计一下共有多少行就知道了。
    在这里记录下来没意义,他的顺序肯定是1,2,3,4,5也与你那个编号字段也重复了。
    function writeAccessLog(){
    if(!isset($_COOKIE['accessCount'])){
    $accessCount = 1;
    setcookie('accessCount',1);
    }
    else{
    $accessCount = $_COOKIE['accessCount'];
    } if(strstr($_SERVER['HTTP_USER_AGENT'],'windows'))
    $flag = "\n";
    else
    $flag = "\r\n"; if(stristr($_SERVER['HTTP_USER_AGENT'],'MSIE'))
    $browser = 'IE';
    elseif(stristr($_SERVER['HTTP_USER_AGENT'],'firefox'))
    $browser = 'Firefox';
    elseif(stristr($_SERVER['HTTP_USER_AGENT'],'Chrome'))
    $browser = 'Chrome';
    elseif(stristr($_SERVER['HTTP_USER_AGENT'],'Opera'))
    $browser = 'Opera';
    else
    $browser = '其它';

    file_put_contents($dir.date('Y-m-d').'.log','IP:'.$_SERVER['REMOTE_ADDR'].'|浏览器:'.$browser.'|访问次数:'.$accessCount.$flag,FILE_APPEND); setcookie('accessCount',$accessCount+1);
    }
    //存放日志的目录名,结尾要带/
    $dir = './log/';
    writeAccessLog($dir);把$dir = './log/';改成一个你服务器存在的目录,结尾要带/我给你记录下来的格式是这样的:文件名格式:2010-07-17.log
    内容类似:
    IP:127.0.0.1|浏览器:IE|第1次访问
    IP:127.0.0.1|浏览器:IE|第2次访问
    IP:61.123.176.11|浏览器:IE|第1次访问编号的意义不大,想记录下来也可以,但是要么多占一些系统资源,要么程序需要每次扫描一下这个日志文件的行数,多余的资源开销。所以就不记了。
    我给你记录的访问次数是某一个ip的第几次访问。
    把上面代码放在你论坛的一个公共包含的文件中。这得看你是什么论坛。
      

  6.   

    忘了并发写入的问题了,linux下用pcntl_fork()生成一个进程id,然后做控制。windows下写的时候用flock先将文件锁住,写完后解锁,判断文件如果是锁住的sleep一段时间再尝试,就行了。不过sleep的话页面将会产生等待,在高并发的时候会拖慢服务器响应速度。