关于 PHP 插入数据库如果该接口访问多次可能会插入多次的思考 作者: Chuwen 时间: 2021-01-04 分类: PHP 评论 # 前言 今晚在搞一个用户注册的接口,突然发现如果该**注册接口**在一定的时间内访问多次,有可能注册多次,由此来水一篇文章 > 因为这是为了和同学联合做个(我负责网页端、服务端,他负责 Android 端),不能搞得太复杂比如搞个验证码、Session 验证之类的,不然一个 App 注册页面得做好久,循序渐进,先做好基础功能再做这些高级点的 # 主机配置 - Arm64 开发板(也就是**我家云**啦,2020年1月初,70+元在咸鱼捡的矿渣),1GB 内存,配置很垃圾,搭建一些小网站、测试代码还是勉勉强强的 > 在宝塔面板装了两次不同版本的,总共花费2个多小时,都失败了,太难受了。 但最后得用的 Docker,网上搜了下相关镜像,有人做了 **Arm64** 版本的 `MySQL 5.7` 的镜像,拉取镜像、配置、运行,一气呵成。 > Docker 部署确实太方便了。 > 可惜自己花费大量时间去编译装 MySQL,结果以失败告终... # 相关注册逻辑 ```php //1. 判断用户名和密码是否合规 //2. 判断该用户名是否被注册 //3. 插入数据库 //4. 判断是否注册(插入数据库)成功 ``` 这样看上去似乎没什么问题,但是当我测试的时候,一不小心多按了几次刷新,结果数据表里出现了几个一摸一样的用户名。 然后想了想这可能是因为自己主机太垃圾了,插入数据库都要执行那么久... 当然遇到这个问题,肯定是要解决的了,首先想到了用 Redis 弄一个锁,再怎么的也比主机硬盘速度快吧,然后注册完成后就删除 # 解决思路 > 然后网上搜了下,原来我这样写的方法叫**悲观锁**: > 总是假设最坏的情况,每次取数据时都认为其他线程会修改,所以都会加(悲观)锁。一旦加锁,不同线程同时执行时,只能有一个线程执行,其他的线程在入口处等待,直到锁被释放。 > > 涨知识了,这方面的知识看来还得再补补... ```php //此处省略部分代码 $RDS = new Redis(); $RDS->connect('127.0.0.1'); //1. 判断用户名和密码是否合规 //2. 检查该用户名是否正在注册中,防止一个用户名多次用户注册 if ($RDS->sIsMember("nickname", $username)) { die('对不起,你输入的用户名正由别人注册中,请稍后再试!'); } //3. 判断该用户名是否被注册 //4. 添加“用户名注册锁” $RDS->sAdd("nickname", $username); //5. 插入数据库 //6. 删除该用户名锁 $RDS->sRem("nickname", $username); //7. 判断是否注册(插入数据库)成功 ```
Windows 禁用 DiagTrack 服务(Connected User Experiences and Telemetry) 作者: Chuwen 时间: 2021-01-04 分类: Windows 评论 # 关闭微软搜集隐私服务 - 用以 减少 磁盘100% 1. `Win + R` 输入 `services.msc` 2. 找到名称为“**Connected User Experiences and Telemetry**”的服务,双击,然后按照以下配置即可 ![Snipaste_2021-01-04_20-16-18.jpg][1] [1]: https://cdn.nowtime.cc/2021/01/04/370513648.jpg
Laravel 中间件向控制器传入参数 作者: Chuwen 时间: 2020-12-23 分类: Laravel,其他分类 评论 ## 中间件中的handle方法 ``` $request->attributes->add(['data'=>'data]); ``` ## 控制器中要接受参数的方法 ``` function index(Request $request){ echo $request->get('data'); } ``` --- 转载自:https://www.jianshu.com/p/488b92f2015b
CentOS / Alibaba Cloud Linux 2 systemd 进程 CPU 占用过高解决办法 作者: Chuwen 时间: 2020-12-22 分类: Linux 评论 # 网上搜到的方法,更新下 `systemd ` 即可解决 ```shell yum install systemd ``` # 升级完成,CPU 使用率果然立刻下降了
腾讯云 CDN 已经支持 IPv6 访问 作者: Chuwen 时间: 2020-12-19 分类: 唠嗑闲聊 评论 # 之前腾讯云 IPv6 一直在内测的,今天可以发现可以开启了,应该是最近面向公众推出的 ![腾讯云 CDN 已经支持 IPv6 访问][1] # 腾讯云 CDN IPv6 访问 中国境外暂不支持 IPv6;流媒体点播加速暂不支持 IPv6 开启后,支持通过IPv6协议进行访问 # “域名存在特殊配置,无法打开IPv6访问配置,请提交工单进行修改” 如果出现这个提示,你需要**提交工单**让腾讯云他们后台进行修改,但是碰到很久之前添加的比如本博客(nowtime.cc),需要等它们到工作日才能修改。 最近添加的比如(ip.nowtime.cc)你提交工单后,会在指定时间刷新 ,然后你就可以开启了 ![腾讯云工单][2] # ip.nowtime.cc IPv6 查询结果 查询链接:https://ip.nowtool.cn/ip.nowtime.cc | # | IP地址 | 物理地址/ISP | | --- | --- | --- | | 1 | [2408:877a:2000:0:26::](http://[2408:877a:2000:0:26::]/ "点击可跳转至 2408:877a:2000:0:26::") | 中国新疆区乌鲁木齐市 / 中国联通IDC | | 2 | [2408:8719:3000:6:18::](http://[2408:8719:3000:6:18::]/ "点击可跳转至 2408:8719:3000:6:18::") | 中国山东省青岛市 / 中国联通IDC | | 3 | [2408:80f0:4105:e:2b::](http://[2408:80f0:4105:e:2b::]/ "点击可跳转至 2408:80f0:4105:e:2b::") | 中国北京市 / 中国联通IDC | | 4 | [2408:872b:e02:5:17::](http://[2408:872b:e02:5:17::]/ "点击可跳转至 2408:872b:e02:5:17::") | 中国内蒙古区 / 中国联通IDC | | 5 | [2408:8774:1:10:11::](http://[2408:8774:1:10:11::]/ "点击可跳转至 2408:8774:1:10:11::") | 中国甘肃省 / 中国联通IDC | | 6 | [2408:8766:0:1000:19::](http://[2408:8766:0:1000:19::]/ "点击可跳转至 2408:8766:0:1000:19::") | 中国四川省 / 中国联通IDC | | 7 | [2408:874c:0:17:1b::](http://[2408:874c:0:17:1b::]/ "点击可跳转至 2408:874c:0:17:1b::") | 中国江西省 / 中国联通IDC | | 8 | [2408:8766:1:2:23::](http://[2408:8766:1:2:23::]/ "点击可跳转至 2408:8766:1:2:23::") | 中国四川省 / 中国联通IDC | | 9 | [2408:874e:1000:3:1a::](http://[2408:874e:1000:3:1a::]/ "点击可跳转至 2408:874e:1000:3:1a::") | 中国湖北省 / 中国联通IDC | | 10 | [121.51.175.120](http://121.51.175.120/ "点击可跳转至 121.51.175.120")| 中国 - 广东深圳市 / 深圳市腾讯计算机系统有限公司(BGP) | ![ip.nowtime.cc IPv6 查询结果][3] [1]: https://cdn.nowtime.cc/2020/12/19/3740714580.jpg [2]: https://cdn.nowtime.cc/2020/12/19/497937422.jpg [3]: https://cdn.nowtime.cc/2020/12/19/3293729527.jpg