首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当php代码没有达到release-mysql-lock阶段时会发生什么?

当php代码没有达到release-mysql-lock阶段时,会发生以下情况:

  1. 如果当前连接的MySQL事务没有提交,那么该事务会一直等待,直到达到release-mysql-lock阶段或者超时。
  2. 如果当前连接的MySQL事务已经提交,那么该事务会立即返回成功,而不会等待达到release-mysql-lock阶段。
  3. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行失败,那么该事务会立即返回失败,而不会等待达到release-mysql-lock阶段。
  4. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行成功,但是该事务的提交操作失败,那么该事务会立即返回失败,而不会等待达到release-mysql-lock阶段。
  5. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行成功,但是该事务的回滚操作失败,那么该事务会立即返回失败,而不会等待达到release-mysql-lock阶段。
  6. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行成功,但是该事务的回滚操作成功,那么该事务会立即返回成功,而不会等待达到release-mysql-lock阶段。
  7. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行失败,但是该事务的回滚操作成功,那么该事务会立即返回成功,而不会等待达到release-mysql-lock阶段。
  8. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行失败,但是该事务的回滚操作失败,那么该事务会立即返回失败,而不会等待达到release-mysql-lock阶段。
  9. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行成功,但是该事务的回滚操作失败,那么该事务会立即返回失败,而不会等待达到release-mysql-lock阶段。
  10. 如果当前连接的MySQL事务已经提交,但是该事务中的其他语句执行成功,但是该事务的回滚操作成功,那么该事务会立即返回成功,而不会等待达到release-mysql-lock阶段。 以上情况都是基于MySQL的默认配置,如果MySQL的配置文件中的innodb_deadlock_detect选项设置为ON,那么当发生死锁时,MySQL会强制回滚其中一个事务,以保证数据的一致性。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP底层工作原理

深入探讨 等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。...PHP启动第一步 不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。...启动第二步 一个页面请求发生时,SAPI层将控制权交给PHP层。...要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”。 下面的是用一些图示来说明的! PHP底层工作原理 ?...图1 php结构 从图上可以看出,php从下到上是一个4层体系 ①Zend引擎 Zend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法

83720
  • 年前的最后一次面试题总结

    2、请求初始化阶段(request init) 一个页面请求发生时,在请求处理前都会经历的一个阶段。对于fpm而言,是在worker进程accept一个请求并读取、解析完请求数据后的一个阶段。...3、php脚本执行阶段 php代码解析执行的过程。Zend引擎接管控制权,将php脚本代码编译成opcodes并顺次执行。这也我们的代码真正执行的阶段。...这是发生在所有请求都已经结束之后,例如关闭fpm的操作。(这个是对于CGI和CLI等SAPI,没有“下一个请求”,所以SAPI立刻开始关闭。) 说说fastcgi与cgi之间的区别是什么?...缓冲区达到最大值后,回收算法会循环遍历zval,判断其是否为垃圾,并进行释放处理。 当前请求结束之后,PHP执行脚本结束,也会清楚所有的变量信息。...php-fpm与swoole之间有什么区别? php-fpm与swoole介绍: 早期版本的 PHP没有内置的 WEB 服务器,而是提供了 SAPI(Server API)给第三方做对接。

    1.4K20

    PHP的垃圾回收机制以及大概实现

    的union(联合体),总体看来就是这样的: 好了,进入代码实战阶段,注意两点: 我用的PHP版本是7.1.17(记住!...那么写时拷贝是什么意思呢?看下面代码: <?...那么,什么时候真正的发生复制呢?就是当我们修改$a的值为123的时候,这个时候就不得已进行复制,避免$b的值和$a的一样。 <?...那么垃圾回收发生什么时候?有些同学可能有疑问,就是php不是运行一次就销毁了吗,我要着gc有何用?...,然后函数还需要修改这个巨大的数组参数,你们应该是函数的运行范围里面修改这个数组,所以此时会发生写时拷贝了,函数运行完毕后,就得赶紧释放掉这块儿内存以供给其他进程使用,而不是非得等到本地fpm request

    45330

    PHP处理MYSQL注入漏洞

    PHP处理MYSQL注入漏洞 本文最后更新时间超过30天,内容可能已经失效。 一、什么是SQL注入 SQL注入漏洞为PHP研发人员所熟知,它是所有漏洞类型中危害最严重的漏洞之一。...攻击者再利用其他漏洞找到下载方式,将文件下载或者复制走,最终造成被拖库时,Web站点的数据就会全部暴露。 如果执行下面请求,将发生更可怕的事情。...PHP在使用GBK编码的时候,会认为两个字符是一个汉字。输入的第一个字符的ASCII码大于128时,看看会发生什么情况,例如输入“%81'”。...攻击者将参数二次编码时,PHP的自动转义将无法识别用户的恶意输入。 用前面的URL,来构造如下新的请求。 http://localhost:8080/mysql.php?...name=name%2527 PHP接收到请求时会自动进行一次URL解码,变为name%27,然后代码里又使用urldecode()函数或rawurldecode()函数进行解码,%27变成了单引号,

    2.3K50

    PHP安全:变量的前世今生

    PHP接受参数时会对得到的参数名进行一定变换。...PHP有两种比较是否相等的符号,分别是”==”和”===”,前者只比较值是否相等,不同类型互相比较会自动转型,安全问题就发生在这里,后者先比较类型,再比较值,对类型不同的比较返回false。...(2).pcre回溯次数绕过 PHP的正则表达式中,匹配模式带有通配符(例如或者?)就有可能发生回溯。...当我们输入bcdefg用于匹配时,<匹配到开头的尖括号,匹配到行末,没有发现尖括号,结果是开头的尖括号。从去除第一个尖括号的结果继续匹配,由于什么都能匹配,直接匹配到行末。...bcdefg达到一百万个时,PHP不会继续回溯,就跳过了匹配返回false,从而绕过正则。

    1.7K20

    简单对比一下PHP 7 和 PHP 5 中的对象

    对于既没有继承 parent class,也没有实现 interface,也没有使用 trait 的 class,绑定过程发生PHP 代码的编辑阶段,并且不会消耗太多资源。...另外有一个值得注意的地方,如果 class 在绑定时已经解析到了父类,则绑定发生代码编译阶段;否则发生代码执行阶段。...发生方法调用时: 第一种情形,在代码编译阶段,方法名称 bar 确定为字符串常量,编译器可以预先计算好其对应的 zend_literal 结构,即 key 参数。这样,代码在执行时相对会更快。...因为 PHP 发生致命错误时,destruct 方法并不会被调用。...三、PHP 7 中的 object 与 PHP 5 相比,PHP 7 中的 object 在用户层并没有基本没有什么变化;但在底层实现上,在内存和性能方面做了一些优化。

    1.1K20

    php底层原理之垃圾回收机制

    变量都会由 变量类型 、 value值 、 引用计数次数 和 是否是引用变量 四部分组成 注:上面zval结构体是php5.3版本之后的结构,php5.3之前因为没有引入新的垃圾回收机制,即GC,所以命名也没有...a赋值给变量b的时候,并没有立刻生成一个新的变量容器,而是将变量b指向了变量a指向的变量容器,即内存"共享";而变量b其中一个元素发生改变时,才会真正发生变量容器复制,这就是 写时复制技术 引用计数清...版本之前的垃圾回收机制存在一个漏洞,即数组或对象内部子元素引用其父元素,而此时如果发生了删除其父元素的情况,此变量容器并不会被删除,因为其子元素还在指向该变量容器,但是由于所有作用域内都没有指向该变量容器的符号...新的垃圾回收机制 php5.3版本之后引入根缓冲机制,即php启动时默认设置指定zval数量的根缓冲区(默认是10000),php发现有存在循环引用的zval时,就会把其投入到根缓冲区,根缓冲区达到配置文件中的指定数量...总结 垃圾回收机制: 1、以php的引用计数机制为基础(php5.3以前只有该机制) 2、同时使用根缓冲区机制,php发现有存在循环引用的zval时,就会把其投入到根缓冲区,根缓冲区达到配置文件中的指定数量后

    79440

    基础总结 (Go篇)

    G运行结束时,会先放到p.gFree,最多64个,满了放一半到sche.gFree空闲链表里,再go fun时会先从gFree里拿旧的G,没有再创建新的G对象。...空的for循环并没有调用函数,就没机会执行栈增长检测代码,他并不知道GC在等待他让出。...1.14基于信号的抢占调度:在创建一个工作线程时,会调用mstart,调用minit做信号初始化(注册信号抢占函数),发生抢占时会调用preemptone做信号异步抢占,preemptone->preemptM...3、Read或Write时,因为是非阻塞IO,没有数据,没有IO事件发生时,会返回EAGAIN错误,会调用 fd.pd.waitRead方法,把当前G进行goPark,挂在pollDesc结构体里的...比如1M到2M到后面500M要到1G才会触发,存活对象越多时越难达到阈值,所以要2分钟定时GC。

    40420

    深入PHP内核(二)——SAPI探究

    第一阶段PHP模块初始化阶段(MINT),可以初始化扩展内部变量、分配资源和注册资源处理器,在整个PHP实例生命周期内,该过程只执行一次。 什么PHP模块?...请求完成可能是执行到脚本完成,也可能是调用die()或exit()函数完成 第四阶段PHP生命周期结束时候,PHP_MSHUTDOWN_FUNCTION对模块进行回收处理,这是每个扩展的模块关闭函数...多进程的生命周期 多进程模型中,每个子进程都是独立运行,没有代码和数据共享,因此一个子进程终止退出和重新生成,不会影响其他子进程的稳定。 3....客户端请求达到PHP-FPM,管理器选择到一个CGI进程进行处理,Nginx将CGI环境变量和标准输入发送到一个PHP-CIG子进程。...每一个Web 请求PHP都必须重新解析php.ini、载入全部扩展并始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。另外,对于数据库和Memcache的持续连接可以工作。

    76920

    php文件包含的几种方式总结

    require的工作方式是提高PHP的执行效率,它在同一个网页中解释过一次后,第二次便不会解释。...第二次遇到相同文件时,PHP还是会重新解释一次,include相对于require的执行效率下降很多,同时在引入文件中包含用户自定义函数时,PHP在解释过程中会发生函数重复定义问题。...相互区别 include和require: include有返回值,而require没有返回值。 include在加载文件失败时,会生成一个警告(E_WARNING),在错误发生后脚本继续执行。...//结果: this is test1 require在加载失败时会生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本停止执行。一般用在后续代码依赖于载入的文件的时候。...而include_once载入文件时会有内部判断机制判断前面代码是否已经载入过。

    1.4K31

    PHP一次请求的生命周期

    一个请求进来,到达nginx或者是apache,再到php,直到出现响应,发生什么事情 ---- PHP的运行模式 1.cli:命令行模式 2.CGI(common gateway interface...PHP脚本执行的开始,都是通过SAPI接口进行的 ---- 第一阶段:SAPI接口,模块初始化阶段 SAPI是什么?...给定的SAPI启动时,PHP进入初始化内核子系统,主要对PHP框架,zend引擎的初始化操作,这个阶段一般是在SAPI启动时执行一次。...worder 进程的生命周期如下图: ---- 第二阶段:请求初始化阶段 一个请求发生时,在处理请求前需要经历的一个阶段 : Nginx 解析一个请求 符合php脚本请求的规则的时候,会把这个请求交给反向代理中的...---- 第三阶段php脚本执行阶段 php代码解析执行的过程,Zend引擎接管控制权。

    96530

    真的!Web安全入门看这个就够了

    第一章 我的世界安全观 ---- 1.1 Web安全简史 在Web发展初期由于对安全问题认知认识不足,导致发生过许多的安全问题,且遗留下许多历史问题:如PHP语言至今只能依靠较好的代码规范来防范文件包含漏洞...由于Apache的mime.types文件下没有.rar这个文件类型,所以这会将其遍历解析为php类型的文件 IIS6文件解析漏洞 文件名为abc.asp;abc.jpg,由于“;”会将其解析为abc.asp...配合XSS,在一些流量比较大的网页上添加攻击目标的网页请求,访问被攻击页面的用户,就会对其进行请求以达到攻击的目的。...> #这意味着引用同目录下的test变量文件为php代码 原理 使用了这四个函数去包含一个新文件时,这个文件都会以PHP代码进行执行,PHP内核并不会在意该被包含的文件是什么类型。...远程文件包含使用方法 变量覆盖漏洞 php.ini的register_globals=on时会出现PHP中的代码变量会被cookie、表单中的变量赋值的情况 ---- 第十五章 Web Server

    68750

    真实网站劫持案例分析

    1.2.2 判断referer 若referer关键字为:baidu、google、yahoo、bing、soso、360等搜索引擎爬虫,爬虫去访问时会调用browserRedirect()函数。...2.3 案例 一网站发现其打开时会跳转到博彩网站,对其源码进行分析,发现其页面被插入一段JS代码,导致其打开时会跳转到博彩站点。 ? ? 3....这些文件是动态脚本每次加载时都会加载的配置文件,如访问x.php时会加载conn.php。...通过源码与抓包分析判断黑客是在服务器端做的劫持,但是相应的分析全局文件找了很长时间就是没有找到黑客在什么地方插入劫持代码的。 ?...找到base.php,由于其源码比较多。分析其源码找了好久就是没有找到劫持所用的代码,后来经同事协助,花了好长时间才找到黑客进行劫持所有的代码

    3.8K60

    切到 PHP7,我们是如何节省一百万美元的?

    一个设计良好的系统应该是平衡的:访问量增长时,由系统的各个部分分摊这些压力,同样的, 达到系统阀值时,系统的所有组件(不仅仅包括硬盘数据库,还有处理器和网络)共同分摊压力。...这个计划包括三个阶段: 修改PHP构建/部署的基础设施和为大量的扩展调整现有的code改变基础设施和测试环境修改PHP应用程序的代码。 我们稍后会给出这些这些阶段的细节。...通常,当我们开始考虑实施产品测试(或在某些情况下,已经开始实施的话)时,在测试过程中我们会发现他们的代码“并没有达到测试阶段”。...换句话说,如果函数内func_get_args前参数变量的变化()被调用,则该代码的行为可以由五个版本不同。同样的事情发生时,应用程序的业务逻辑坏了,但并没有什么在日志中。...这允许我们让代码兼容PHP5和PHP7。为什么这个很重要?因为除了php代码的问题之外,还有PHP7极其自身扩展的一些潜在的问题(这些都可以证实)。

    1.3K70

    PHP优化杂烩

    原文出处: 火丁笔记(@火丁笔记) 讲 PHP 优化的文章往往都是教大家如何编写高效的代码,本文打算从另一个角度来讨论问题,教大家如何配置高效的环境,如此同样能够达到优化的目的。...这里所说的池可不是指数据库连接池之类的东西,而是指进程池,PHP 允许同时启动多个池,每个池使用不同的配置,各个池之间尊重彼此的主权领土完整,互不干涉内政。 ? -pool 有什么好处呢?...-listen 和 TCP 比较,Unix Socket 省略了一些诸如 TCP 三次握手之类的环节,所以相对更高效,不过需要注意的是,在使用 Unix Socket 时,因为没有 TCP 对应的可靠性保证机制...,所以最好把 backlog 和 somaxconn 设置大些,否则面对高并发时会不稳定。...此时如果进程数多于 CPU 个数的话,那么发生 IO 时,CPU 就有机会切换到别的请求继续执行,虽然这会带来一定上下文切换的开销,但是总比卡在 WAIT 状态好多了。 那多少合适呢?

    91340

    PHP优化杂烩

    PHP 优化的文章往往都是教大家如何编写高效的代码,本文打算从另一个角度来讨论问题,教大家如何配置高效的环境,如此同样能够达到优化的目的。...这里所说的池可不是指数据库连接池之类的东西,而是指进程池,PHP 允许同时启动多个池,每个池使用不同的配置,各个池之间尊重彼此的主权领土完整,互不干涉内政。 pool 有什么好处呢?...listen 和 TCP 比较,Unix Socket 省略了一些诸如 TCP 三次握手之类的环节,所以相对更高效,不过需要注意的是,在使用 Unix Socket 时,因为没有 TCP 对应的可靠性保证机制...,所以最好把 backlog 和 somaxconn 设置大些,否则面对高并发时会不稳定。...此时如果进程数多于 CPU 个数的话,那么发生 IO 时,CPU 就有机会切换到别的请求继续执行,虽然这会带来一定上下文切换的开销,但是总比卡在 WAIT 状态好多了。 那多少合适呢?

    40210

    完善你的Laravel异常处理

    注册异常Handler 这里又要回到我们说过很多次的Kernel处理请求前的bootstrap阶段,在bootstrap阶段的 Illuminate\Foundation\Bootstrap\HandleExceptions...,在方法中捕获到错误后将错误转化成异常再重新抛出,这样项目中所有的代码没有被正确执行时都能抛出异常实例了。...Illuminate\Database\QueryException Laravel中执行SQL语句发生错误时会抛出此异常,它也是使用率最高的异常,用来捕获SQL执行错误,比方执行Update语句时很多人喜欢判断...HttpResponseException Laravel的处理HTTP请求不成功时抛出此异常 扩展Laravel的异常处理器 上面说了Laravel把 \App\Exceptions\Handler 注册成功了全局的异常处理器,代码没有被...,发生错误时没办法记录到上下文信息就非常不利于开发者进行问题定位。

    2.8K20

    垃圾回收之 Python PHP Java Go 对比

    常见的垃圾回收算法 引用计数 给每个对象结构体附加一个引用计数的属性,对象被赋值或引用时会增加引用计数,对象销毁时减少引用计数,引用计数变为 0 时回收。...优点:实现简单,性能良好 缺点:无法识别循环引用的情况 代表语言:Python、PHP 标记-清除 从内存中一组 root object 根对象开始向下遍历并标记所有可能访问到的对象,即可达对象,相反没有被标记的对象即为不可达对象...将可能存在循环引用的容器类对象放入一个 GC 缓冲链表,缓冲链表中对象数量达到 10000 个则会触发一次 GC,步骤如下: 从 GC 缓冲链表头开始进行深度优先遍历,标记为 GC_GREY 灰色,...S1 也满,则在移动到 S0,对象年龄再加一,直到对象年龄达到 15 时,存活对象移入老年代 Full GC 老年代 FullGC 在多个情况下都会被触发: 发生 Young GC 之前进行检查,如果...老年代没有足够空间存放对象时,会触发一次 FullGC。

    26710
    领券