
php
文章平均质量分 94
mu_rain
十七年行业经验;热衷于技术交流。
展开
-
php结合redis 秒杀详解。【有图有代码,慢慢把问题说清楚】
帖子内容较长,作者期待慢慢的把问题讲细讲透,请耐心阅读。1 首先,一点点准备工作。1.1建立商品表,并初始化数据,以及订单表创建。1.2 创建 订单表。1.3 将商品数据写入到redis 队列中去。 例如编号1 商品有100件。 就往 goods_1 队列里写100个1 进去。例用pop 操作的原子性(扛并发) 后面购买时,买一个就pop 一个。//代码使用yii 框架,重点在思路,...原创 2018-05-09 11:05:41 · 2288 阅读 · 1 评论 -
php 使用msyql 行锁防止高并发请求时扣库存异常 【防爆单,超卖】
//假设用户 $uid 购买 good_id 号商品 $amount 份。 $uid = rand(1,10); $amount = rand(1,5); $goods_id = rand(1,6); $time = time(); //简单实现。 //1 查询商品库存 ,求出此商品剩余库存数。 ...原创 2018-05-08 17:02:51 · 1289 阅读 · 0 评论 -
php redis 布式锁 共享session 秒杀 【合辑整理】
1 redis 实现分布式锁。 悲观锁。原理,进去则抢锁,抢失败了 等一秒再抢,再等一秒再抢,如此反复循环。解锁就是删掉对应的键。 /** * 实现redis 悲观锁 * User: babytuo */Class RedisLock { public $expire = 2; public function test(){ $this->l...原创 2018-05-08 16:28:20 · 863 阅读 · 0 评论 -
php redis 限单用户5秒请求一次。
常见应用场景,发帖,回帖,发送短信请求等,秒杀抢购等,需要限制单个用户单位时间内的有效请求次数时使用。 /** * 单位时间内请求次数限制。 * @return array */ function preCheck_frequency( $lock_key , $expire = 0 , $tag = '发帖'){ if( !$ex...原创 2018-05-08 16:00:53 · 1381 阅读 · 0 评论 -
php 冒泡排序,快速排序,选择排序,插入排序 代码实例与复杂度分析
一 php代码实例1冒泡排序。 【为描述方便,例子全面为升序排列】 简述:假设数组有10个数字,从左向右。依次比较,如果前者大于后者,则两两交换。每一轮将冒泡一个最大数出来,依次循环,完成排序 流程描述:-- 第一次 a[0] 与 a[1] 比如果 a[0] > a[1] 则 a[0] 与 a[1] 交换,然后 a[1] 与 a[2] 交换,依次到 a[8] 与 a[9] 交换。...原创 2018-05-08 15:45:00 · 637 阅读 · 0 评论 -
php 两种方式实现求 斐波那契数【递归,递推】
斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数原创 2018-05-08 15:29:21 · 3371 阅读 · 0 评论 -
php 如何最有效率的求超大数组的中位数。
面试时,有可能会碰到这类问题。这是看起来是一道简单题,但其中是充满着坑的。1 中位数, 就是数值中间的那个数,不是平均数。 例如1,2,99 的中位数是2 而平均数是342 巨大数组,当看到这个时,就不要再简单的用排序法了。 排序确实解决了问题,但其它确实存在大量的多余的计算。对性能的浪费极其严重。此题解题思路如下,和快排有点类似。//模拟一个大数组。 $arr = ar...原创 2018-05-14 09:33:44 · 3308 阅读 · 2 评论 -
【项目实站】 php 实现抽奖代码详解【下篇】重构后的代码
接上篇。点击查看--》项目实站】 php 实现抽奖代码详解【中篇】 如何面对需求变更上篇讲了如何设计代码,封装需求, 接下来就是代码实现了,如下:class DemoLottery{ public function lottery($lottery_id , $uid){ //一些防并发的代码,略。。。。 try { //取用户...原创 2018-05-11 16:43:23 · 654 阅读 · 0 评论 -
【项目实站】 php 实现抽奖代码详解【中篇】 如何面对需求变更
接上篇。产品试用了一下抽奖后,提出了一些新的需求如下。(请不要问为什么不早说)//需求2.0//1 单个用户,单天抽奖次数要限制一下,不要超过10次,最后一天随便抽。 周六日,仅限会员等级5以上的才可以抽。//2 我们的(单次)奖励,有大约1000 个,在15天的时间内让客户抽完。//3 1,2,3 等奖,上个月累积消费10万且vip5 以上的用户才可以中奖。//4 单个用户,1,2,...原创 2018-05-10 18:27:11 · 712 阅读 · 0 评论 -
【项目实站】 php 实现抽奖代码详解【上篇】 基础实现
基本思路:用户生成一个随机数,和出奖的奖品设置的随机数比对一下。符合规则则中奖(用户的随机数< 奖品设置的概率值),不符则未中奖。一 项目准备期,需求确认。和产品大哥一阵切磋后,认为需求1.0//1 抽奖活动有起止时间//2 奖品有限制个数的大奖,和不限次数的小奖。为了要用户开心,每抽必中。至于成本什么的,把抽奖回报率设好,按标准线来。//3 后来有位产品大哥说,可否做个代码,让内定的...原创 2018-05-09 21:02:01 · 3905 阅读 · 3 评论 -
微信上传图片。【代码示例】
一 准备工作。一 受限于wx 上传图片时,要getToken ,而调access_token 时,需要加ip 白名单。不然报 invalid signature出现如下情况,优先考虑ip 白名单问题,当然还有可能 ngix 反向代理引发的问题,我暂时没碰到。其次就是 js 安全域名设置 进入后按微信平台要求设好对应的域名。 二 代码实现//控制器层 $data = MyWxServ::getP...原创 2018-05-15 18:47:37 · 3084 阅读 · 0 评论