php如何解决脏读,php 技术沉淀

一、cgi/fast-cgi/php-fpm

1. cgi

cgi,通用网关协议,它在职责、通信方式、实现要求和安全性上,对 server 和 cgi 程序进行了规范,使得很多语言能在满足 cgi 协议的前提下,和 server 分工合作,实现 web 开发。但 cgi 协议缺少对「server 如何执行 cgi 程序」的规范,使得 cgi 模式下,还停留在 fork-execute-destroy 的模式下,性能抵消。

2. fast-cgi

fast-cgi 主要在「cgi执行方式」和「cgi功能角色」两方面进行了优化。它让 server 和 cgi 以 socket 通信的方式,使得 server 和 cgi 能够单独部署。同时,fast-cgi 协议下,cgi 程序不再是单出的 responser 的角色,还有 authenticate 和 filter 的功能。

3. php-cgi

php-cgi 是 fast-cgi 的一个 php 实现。

4. php-fpm

php-fpm 是 php-cgi 的一个进程管理模型,它以父子进程的方式,让父进程负责:与server通信、加载配置、管理子进程,子进程抢占式获取cgi请求后,负责执行cgi程序获得结果,并返回给父进程。同时,php-fpm提供了平滑终止、平滑启动等进程管理方式。

5. php-fpm 如何平滑终止、平滑重启?

kill -USR2 平滑重启。

kill -INI 平滑终止。

6. nginx 内部执行流程

从 cig 协议上看,server 工作流程:接受客户端 http 请求 -> 选择 cgi 程序处理此请求 -> 将 http 请求转化成 cgi 请求 -> 执行 cgi 程序 -> 得到 cgi 结果响应客户端。

7. nginx 和 php-fpm 通信方式

因为 fast-cgi 中规范了 server 和 cgi 以 socket 方式通信,单独部署。因此,根据 socket 域不同,分为 xxx.sock 本地域和 ip:port 的网络域。在 nginx 中,网络域下直接 upstream 的方式,负载均衡。

8. php-fpm 进程管理方式及适用场景。

static 静态。启动固定数量个子进程。没有频繁的进程新建和销毁,适合内存、CPU配置高的机器。进程数量=内存/30MB。

dynamic 动态。进程数量在 min/max/idle 间动态调整。适合配置低的机器,能够有效利用硬件性能。

按需。需要多少启动多少。不适合并发突增的业务场景,很少使用。

MySQL

1. 事务问题

脏读:B事务读到了A事务未提交的数据。

不可重复度:事务A在事务B提交前后,两次读取到的数据不一致。

幻读:事务A更新成功后,事务B修改或新增提交后,事务A发现「没有全部更新成功」

2. 事务级别

读未提交:存在脏读、不可重复读、幻读;基本不用;

读已提交:存在不可重复度、幻读;

可重复读:存在幻读;

串行化:顺序执行,效率低;

3. MySQL锁

锁性质:共享锁 & 排它锁

锁粒度:行锁 & 表锁

加锁方式:悲观锁 & 乐观锁

锁类型:意向锁 & 行锁 & 表锁 & 间隙锁

4. MySQL的RR如何解决幻读?

InnoDB 组合使用行锁Record Lock和间隙锁Gap Lock将:索引中,本记录和本记录两侧值锁定了,无法更新和插入,所以没有幻读问题。

5. 悲观锁 & 乐观锁

悲观锁,认为别人修改他需要的数据的几率很高,所以一开始就锁住他需要的数据,避免别人更新。如:select * from xxx where account='123456' for update。直到它处理完提交事务后才释放。

悲观锁,并发性能不好,降低吞吐量。

乐观锁,认为别人修改他需要的数据的几率很低,直到准备提交所做的修改到数据库的时候才会将数据锁住,判断在取数据和更新数据期间是否有人修改过这个数据,因此会存在不可重复读、幻读等问题。

乐观锁,加锁时间短,性能好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bigdecimal判断等于0_vue2.0源码用到的工具函数,12个简易的复用函数,看看有多简单...

戎马:https://segmentfault.com/a/11900000196796381. 创建一个被冻结的空对象export const emptyObject Object.freeze({ }) 一旦创建不能给这个对象添加任何属性。2. 判断是否是 undefined 或 nullfunction isUndef (v) { return v undefined || v null}在源码…

告诉我们您想要什么,我们将做到:消费者驱动的合同测试消息传递

相当早以前,我们从REST(ful) Web API的角度讨论了消费者驱动的合同测试 ,尤其是将其投射到Java( JAX-RS 2.0规范)的角度。 可以公平地说,至少在公共API方面, REST仍在Web API领域占据…

宝塔面板php降级,宝塔面板6.8.8降级到5.9.1的方案教程

有朋友问起,6.8版本用的不习惯,而且缺少5.9版本的nginx过滤器,而且6.8版本许多功能阉割的厉害:服务器状态中的 连接管理、进程管理 也都被阉割,5.9版本是可以在面板中查看服务器进程管理的,如图&#xff1a…

c++矩阵连乘的动态规划算法并输出_「Javascript算法设计」× 动态规划与回溯算法...

目录:分而治之算法动态规划回溯算法分而治之算法分而治之算法是算法设计的一种方式,它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将解决方式合并以解决原来的问题(例如快速排序,二分搜索等…

背包问题九讲_背包问题

背包问题九讲我发现背包问题既棘手又有趣。 我敢肯定,如果您正在访问此页面,您已经知道了问题说明,但是只是为了完成本章: 问题: 给定一个最大容量为W和N的背包,每个背包都有自己的值和重量,将…

随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

一、什么是随机森林前面我们已经介绍了决策树的基本原理和使用。但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样本,又不…

Java Code Geeks通过Twitter赠送了免费的Sublime Text Editor许可

正在与您的重量级编辑斗争? 然后,我们特别为您准备了一些东西! 我们正在举办比赛,免费赠送 kick-ass Sublime Text Editor 许可证 。 Sublime Text是用于代码,标记和散文的高级文本编辑器。 您会喜欢光滑的用户界面…

http端口_PhpStorm 修改默认端口号63342

PhpStorm 修改默认端口号63342​blog.csdn.net关键词PhpStorm phpStorm phpstorm 修改默认端口号63342 8080 80步骤1.打开Settings2. Build, Execution, Deployment→Deployment3.点击添加,选择In place起一个名字(可以随便起)在Web server U…

php根本自学不了,PHP开发自学还是培训?

员有两种,一种是会php的,一种是不会php的,今天我们不去说哪种开发语言好,哪种又不好,因为语言只是一种工具而已不管你是从IOS、.NET或其它语言进入这个行业,只要你在这个行业坚持多年,与php的感…

rds mysql 磁盘空间,RDS MySQL 空间问题的原因和解决

other_size- 系统文件和临时文件使用空间data_size- 数据文件使用空间binlog_size- Binlog 文件占用空间注:获取实例诊断报告的步骤请参考如何访问RDS 实例诊断报告。2. 解决RDS 实例支持单独升级磁盘空间,升级磁盘空间是解决空间问题的有效方式之一。下…

微信小程序 全局变量异步函数_微信小程序【生命周期】

小程序分为应用、页面和组件三个部分,所以小程序的生命周期涉及以下应用的生命周期页面的生命周期组件的声明周期应用的生命周期对页面生命周期的影响应用的生命周期App() 函数用来注册一个小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。…

oracle agile 性能,Oracle Agile PLM安全漏洞(CVE-2016-3554)

Oracle Agile PLM安全漏洞(CVE-2016-3554)发布日期:2016-07-21更新日期:2016-07-25受影响系统:Oracle Supply Chain Products Suite 9.3.5Oracle Supply Chain Products Suite 9.3.4描述:CVE(CAN) ID: CVE-2016-3554Oracle Agile产…

java 挥发注解_Java的挥发性修饰符

java 挥发注解不久前,我写了一个Java servlet过滤器,该过滤器在其init函数中加载配置(基于web.xml的参数)。 筛选器的配置缓存在私有字段中。 我在字段上设置了volatile修饰符。 后来,当我检查Sonar公司以查看是否在代…

python 线程锁_python多线程编程(3): 使用互斥锁同步线程

问题的提出 上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码&am…

Comnnect oracle,RAC监听日志与CRS日志

RAC监听日志:tnsname.oraCRS日志:位置:Oracle集群涉及的日志主要位于“$ORA_CRS_HOME/log”和“$ORACLE_HOME/log”目录中目录结构:tree -d $ORA_CRS_HOME/logtree -d $ORACLE_HOME/log禁止Clusterware在系统重启后自动启动&#…

python全栈开发百度云_价值2400 2016年11月全栈开发Flask Python Web 网站编程

01-计算机基础常识.mp4 02-Python语言概览、安装与运行.mp4 03-Python 变量、数据类型及存储.mp4 04-Python 常用数据类型概览.mp4 05-数值与字符串.mp4 06-列表list.mp4 07-字典表dict 与元组 tuple.mp4 08-文件与类型汇总.mp4 09-语句、表达式与if分支.mp4 10-循环语句.mp4 1…

Java / Spring:如何快速生成整个数据库CRUD REST API

随着时间的流逝,Spring框架已成为Java中使用最广泛的Web开发框架之一,这一点已变得显而易见。 在接下来的十年之际,Spring最受欢迎的模块Spring Boot刚刚进行了重大更新。 新的Spring Boot版本“ 2.2.0”和年份“ 2020”几乎完美匹配。 因此…

如何在虚拟linux环境运行python_Conda(Python)虚拟环境不能从Windows移植到Linux

在我的Windows 10计算机上,我使用以下命令创建了一个虚拟环境:>conda env export > environment.yml 我尝试在Windows系统上使用yml文件重新创建虚拟环境,效果很好。然后我转学了环境.yml在我的Linux机器(Ubuntu16.04.1&…

oracle两个表合并 sql,如何创建从两个表(Oracle DBMS)生成“合并”数据集的Select SQL语句?...

我最后做了两个步骤:第一步填充事件表1中的数据,第二步合并目标(第一步中的数据集)和另一个源之间的数据。请原谅我,因为法律原因,我不得不混淆表名并省略下面代码中的一些列。下面是SQL:INSERT INTO EVENTS_TARGET (VEHICLE_ID,EVENT_TYPE_ID,CLIENT_ID,EVENT_DATE,CREATED_DA…

php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...

一、我们怎么交易?答:本站采用在线支付的方式,每个产品页面都有一个付款按钮,亲在线付款后页面会显示一个“订单号”,根据这个订单号在本站的下载页面(见顶部菜单)下载相应程序,注意,亲要在30分…