需求:用户访问网站记录用户IP、来源网址、访问网址
注意:高并发如何避免重复记录用户IP地址
知识点
获取访问者ip地址 _SERVER["HTTP_REFERER"] 测试使用baidu.com代替
获取访问网址 'http://'._SERVER['REQUEST_URI']
<?php
#1.组装用户信息
$user_ip = '192.168.1.'.mt_rand(0, 10);
$user_page = 'http://baidu.com';
$user_referer = 'http://baidu.com';
#2.连接数据库
$mem = new Memcache;
$mem->connect('127.0.0.1', 11211);
//【新增】加锁不成功的,进行排队等待(注:第一个用户进来未处理完,后面的用户循环等待)
while ( !$mem->add('lock', 'lock', 0, 0) ){
//进行休息
usleep(1000); //usleep单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒
}
#3.判断该IP未记录则入库
if (!$mem->get($user_ip)) {
//usleep单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒
//usleep(10000);
//入库
$mem->add($user_ip, [$user_ip, $user_pager, $user_referer]);
//注:因为memcache不方面查看键,所以通过文件查看
file_put_contents('./'.$user_ip . '__' . time() . microtime(true), 1);
}
//【新增】删除锁(注:操作完毕后,释放锁,让后面用户进来)
$mem->delete('lock');
网友评论