美文网首页
高并发下使用memcache完成用户访问日志

高并发下使用memcache完成用户访问日志

作者: 表弟_212 | 来源:发表于2018-07-21 22:56 被阅读0次

需求:用户访问网站记录用户IP、来源网址、访问网址
注意:高并发如何避免重复记录用户IP地址
知识点
获取访问者ip地址 _SERVER['REMOTE_ADDR'] 测试使用192.168.1.mt_rand(0,10)代替 获取客户来源网址_SERVER["HTTP_REFERER"] 测试使用baidu.com代替
获取访问网址 'http://'._SERVER['HTTP_HOST']._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');



相关文章

  • 高并发下使用memcache完成用户访问日志

    需求:用户访问网站记录用户IP、来源网址、访问网址注意:高并发如何避免重复记录用户IP地址知识点获取访问者ip地址...

  • 2021-07-13 基于aws链路追踪方案

    链路追踪方案 背景 目前日志使用aop+logback生成。存在问题1.高并发下日志大量生成以至于无法确认哪条日志...

  • hadoop项目实战

    用户行为日志概述 用户行为日志:用户每次访问网站时所有的行为数据(访问、浏览、搜索、点击...);用户行为轨迹、流...

  • 2020最新大厂Redis面试专题

    redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的 memcache...

  • hadoop项目实战

    目录: 用户行为日志概述 用户行为日志:用户每次访问网站时所有的行为数据(访问、浏览、搜索、点击等) 为什么要记录...

  • postgres创建用户并授权

    postgreSQL 创建用户并授权 创建一个用户,只允许访问单独某个特定的库,而其他库不允许访问。 使用超级用户...

  • MemCache教程(1)——MemCache介绍

    什么是MemCache MemCache是一套分布式的高速缓存系统,目前被许多网站使用以提高网站的访问速度,尤其对...

  • 2021-08-06

    ostgreSQL 创建用户并授权 创建一个用户,只允许访问单独某个特定的库,而其他库不允许访问。 使用超级用户登...

  • Nginx-日志管理

    1.1Ng 1日志管理 1.1Nginx日志描述 通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个U...

  • Linux中管理用户、组及权限

    一、使用命令创建用户并赋予访问权限 常见命令: 1、 使用groupadd命令创建用户组user_group 2、...

网友评论

      本文标题:高并发下使用memcache完成用户访问日志

      本文链接:https://www.haomeiwen.com/subject/qlvkmftx.html