抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。 重点在于第二个问题 常规写法: 查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数 <?php $conn=mysql_connect("localhost","big","123456");…

2021年4月7日 0条评论 9点热度 阅读全文

PHP SESSION 共享 REDSI 公用文档 class redisSession{ /** * 保存session的数据库表的信息 */ private $_options = array( 'handler' => null, 'host' => null, 'port' => null, 'lifeTime' => null, 'prefix' => 'PHPREDIS_SESSION:' ); /** * 构造函数 * @param $options 设置信息数组 */ …

2021年4月6日 0条评论 5点热度 阅读全文

思考:在以前的代码中我们不难发现,为了实现功能,我们的代码写的很随意,不受任何约束;所有的代码都需要从最基本单元累积,没有任何支撑(代码复用)。实际开发中是这样的方式的吗? 引入:编程早期时,确实如此,所有的功能都是从无到有慢慢写出来的。因为那时候即便是完全相同的功能,在不同电脑上就得有不同的代码。而随着时间推移,随着项目需求越多,项目实现越来越大,就诞生了这样一种技术:框架技术 一、框架技术(了解) 定义:框架技术,是指利用某种编程语言设计出来的,一种能够约束后续代码书写规范,同时还能对功能开发具有一定支撑性的代…

2021年3月27日 0条评论 14点热度 阅读全文

在介绍Nginx和PHP-FPM的工作机制之前,先了解下面几个名词: 名词解释 CGI:CGI的英文是(COMMON GATEWAY INTERFACE)公共网关接口,是 Web Server 与 Web Application 之间数据交换的一种协议。它的作用就是帮助服务器与后端语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个沟通的协议。 FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。 PHP-CGI:是…

2021年3月25日 0条评论 9点热度 阅读全文

准备工作: 服务器一台 手一双(如果能力较强,单手也可以) 眼睛一对(如果能力较强,睁一只眼闭一只眼也可以)准备好这些我们就可以开始搭建今天的lnmp环境了。 1、首先我们检查一下服务器是否有wget rpm -qa wget 如果有我们就进行下一步,没有就自己下一个 yum install wget //代码附上 查看是否已安装编译器 rpm -qa gcc 如果没有安装yum install gcc gcc-c++ 2、开始安装nginx 1、安装nginx依赖包 nginx的Rewrite模块和HTTP核心模…

2021年3月25日 0条评论 9点热度 阅读全文

导读 本章主要讲解本课程的主线, 导学内容,PHP行情分析等让同学们对当前PHP发展充满信心等,同时还分析了企业级开发流程以及规范说明,让同学们对中大型公司的敏捷开发有一个初步认知。 课程介绍 本课程除了对TP6.0基础和电商逻辑整体开发进行讲解,还包含了企业级通用解决方案,如:消息队列、redis集群、分布式session解决方案、支付模块服务化、分布式锁、限流、容灾、服务降级、商品抢购、排队机制等高级的内容。 初中级部分 TP6基础 电商业务逻辑开发 高级部分 Redis各种场景使用 微服务之支付模块抽离为单独…

2021年3月25日 0条评论 7点热度 阅读全文

面试的一些问题 一、mysql相关 详细参照这里 select进来经历了什么 连接器(管理连接,权限校验)->查询缓存(命中直接返回结构)->分析器(词法语法分析)->优化器(执行计划,索引选择)->执行器(操作引擎返回结果)->存储引擎 隔离级别 READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。 READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复…

2021年3月24日 0条评论 10点热度 阅读全文

php中数组合并的两种方法如下图代码所示 $arr1=[ 0=>1, 1=>2, 2=>3, 3=>4,'a'=>7]; $arr2=[ 0=>5,'a'=>6]; var_dump($arr1+$arr2); var_dump(array_merge($arr1,$arr2));die; 结果为 综上所得: 用array_merge合并数组的时候一个数组中的值追加再前面一个数组的后面,如果是非数字键名相同 后面会覆盖前面 用加号来合并数组如果键名相同,则去除最先出现的数组…

2021年3月24日 0条评论 9点热度 阅读全文

需求: 有时候项目架构会随着数据量而改变,当单一服务器不能承载时,负载均衡是比较好的选择。 既然是负载均衡,有可能就需要把session驱动从文件改为redis。 修改Session驱动: //支持指定 Session 驱动,配置文件如下: 'session' => [ 'prefix' => 'module', 'type' => 'redis', 'auto_start' => true, // redis主机 'host' => '127.0.0.1', // redis端口 '…

2021年3月19日 0条评论 10点热度 阅读全文

有新进的同事需要指导,顺便梳理一下新手第一天进公司做laravel项目的上手简易流程,仅供参考,欢迎高手指点。 开发前准备 分析业务,梳理需求,理清业务操作流程(这步非常重要,但本节不讨论对需求的分析和理解) 主要是查看原型图,确认需求,梳理数据流向和操作流程,画出流向图 开始代码 1、建立数据模型、控制器、资源文件 php artisan make:controller PhotoController --resource --model=a_model 以上命令使用后,自动生成控制器文件,模型文件,资源模板bl…

2021年3月15日 0条评论 21点热度 阅读全文