帮助完成一个PHP或者其他语言记录访问者信息

slizare 2010-07-17 04:11:24
我有一个论坛,一直开着,最近改版之后,很多人都说论坛页面出错了,但是我这里显示都很正常!

自己就像写一个可以记录访问者的一些信息


如:
编号:XXXX IP:1.1.1.1 浏览器:IE 访问次数:XXX

每个不同的IP访问都会新生产一行,不会重复一直一行生成,自己能力有限!希望能帮忙的哥们帮忙一下哈!


大家尽力!
...全文
125 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
an9ryfr09 2010-07-18
  • 打赏
  • 举报
回复
忘了并发写入的问题了,linux下用pcntl_fork()生成一个进程id,然后做控制。windows下写的时候用flock先将文件锁住,写完后解锁,判断文件如果是锁住的sleep一段时间再尝试,就行了。不过sleep的话页面将会产生等待,在高并发的时候会拖慢服务器响应速度。
an9ryfr09 2010-07-18
  • 打赏
  • 举报
回复
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的第几次访问。


把上面代码放在你论坛的一个公共包含的文件中。这得看你是什么论坛。
床上等您 2010-07-17
  • 打赏
  • 举报
回复
可以用db 来存储。
用户打开网站就保存到数据库,ip,时间,浏览器,等等。
就像做一个 log
不难啊。
Dleno 2010-07-17
  • 打赏
  • 举报
回复
读写文件前先加锁,操作完成后解锁。防止并发
slizare 2010-07-17
  • 打赏
  • 举报
回复
我不太懂这东西,用什么方法可以完成这个
编号:XXXX IP:1.1.1.1 浏览器:IE 访问次数:XXX
amani11 2010-07-17
  • 打赏
  • 举报
回复
访问次数,对于游客,大概也只能用cookie了
amani11 2010-07-17
  • 打赏
  • 举报
回复
结贴率太低了……

WEB服务器的日志没有么?

php用文件记录,你首要解决的是,怎么在并发较高的状态下完整记录。。。加文件锁LOCK_EX 会不会等待的问题

至于具体的信息,大部分$_SERVER里都有

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧