pcntl_fork 导致 MySQL server has gone away 解决方案
pcntl_fork 前连数据库,就会报 MySQL server has gone away 错误。原因是子进程会继承主进程的数据库连接,当mysql返回数据时,这些子进程都可以通过这个连接读到数据,造成数据错乱。
该操作数据库的地方还是要操作数据库; 要解决这个问题,要在 $pid = pcntl_fork(); 前清理掉之前的MySQL连接;
官方文档的解释以及解决方案
http://php.net/manual/en/function.pcntl-fork.php#70721

于是我如上尝试,咦,还是不行啊~~再仔细看一下代码,发现不对劲~~要在 $pid = pcntl_fork(); 前清理掉之前的MySQL连接,为什么上面的代码是$db = mysql_connect($server, $username, $password); ~~
于是,我在 $pid = pcntl_fork(); 之前改成 disconnet ~
$model_mod = new Model_Base();
$model_mod->disconnect();
$pid = pcntl_fork();
//父进程和子进程都会执行下面代码
if ($pid == -1) {
//错误处理:创建子进程失败时返回-1.
die('could not fork');
} else if ($pid) {
$model_mod->connect(); //父进程会得到子进程号,所以这里是父进程执行的逻辑
pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。
} else { //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
}
最后成功解决这个问题~~
pcntl_fork 导致 MySQL server has gone away 解决方案的更多相关文章
- 黄聪:Wordpress、PHP使用POST数据过大导致MySQL server has gone away报错原因分析
错误原因: 当POST的数据超过 max_allowed_packet 就会报 MySQL server has gone away 的错误. 1.查看当前Mysql的 max_allowed_pac ...
- gearman中worker常驻后台,导致MySQL server has gone away
产生这个原因主要有如下几点: 1.mysql服务宕机了 2.长时间没有操作,超过了wait_timeout的设置,mysql自动断开 3.mysql请求链接被主动kill 4.发送的请求或返回结果过大 ...
- 从【MySQL server has gone away】说起
本文目的 这几天开发了一个PHP CLI程序,用于后台定时调度执行一些任务.此脚本采用了PHP的多进程(pcntl_fork),共享内存和信号量进行IPC和同步.目的是将串行的任 务并行执行,缩短执行 ...
- can t connect to mysql server on 'localhost'解决方法
源:http://www.111cn.net/database/mysql/37700.htm 先重启服务器可解决大部分问题 错误编号:2003 问题分析: 无法连接到 mysql 服务器,可能的情况 ...
- 捉虫日记 | MySQL 5.7.20 try_acquire_lock_impl 异常导致mysql crash
背景 近期线上MySQL 5.7.20集群不定期(多则三周,短则一两天)出现主库mysql crash.触发主从切换问题,堆栈信息如下: 从堆栈信息可以明显看出,在调用 try_acquire_loc ...
- MYSQL Error 2006HY000:MySQL server has gone away的解决方案
MySQL server has gone away有几种情况. 1.应用程序(比如PHP)长时间的执行批量的MYSQL语句. 最常见的就是采集或者新旧数据转化. 解决方案: 在my.cnf文件中添加 ...
- mysql error 1130 hy000:Host 'localhost' is not allowed to connect to this mysql server 解决方案
ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server D:\Wamp\mysql-\b ...
- MySQL中查询时"Lost connection to MySQL server during query"报错的解决方案
一.问题描述: mysql数据库查询时,遇到下面的报错信息: 二.原因分析: dw_user 表数据量比较大,直接查询速度慢,容易"卡死",导致数据库自动连接超时.... 三.解决 ...
- 关于 Can't connect to MySQL server on 'localhost' (10061) 的一个解决方案
问题描述: 使用Navicat for mysql 无法远程连接到本地数据库,提示Can't connect to MySQL server on 'localhost' (10038) . 本地服务 ...
随机推荐
- 设计模式 -- 迭代器模式(Iterator)
--------------------------------------------------------------------- 1.场景问题 考虑这样一个问题: 9个学生对象分别通过数组存 ...
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 【.net 深呼吸】项目中是否有必要删去多余的引用
很多大伙伴们常常会苦思一个问题:项目代码中用不到的引用,是不是应该删除,以避免代码在编译后存在太多的无意义引用? 其实,这个问题,你完全可以自己去应证的,咋应证呢?知道反射吗,对了,只要你知道这玩意儿 ...
- HUST 1584 摆放餐桌
1584 - 摆放餐桌 时间限制:1秒 内存限制:128兆 609 次提交 114 次通过 题目描述 BG准备在家办一个圣诞晚宴,他用一张大桌子招待来访的客人.这张桌子是一个圆形的,半径为R.BG邀请 ...
- JavaScript易混淆知识点小回顾--数组方法与字符串方法;
数组属性: arr.length;查看数组的长度 arr.Pop;删除数组最后一个元素; 数组的方法: arr.push();添加到数组末端; arr.shift();删除数组的第一个元素; arr. ...
- CSS3知识点整理(三)----变形与动画
一.CSS3中的变形 1)旋转 rotate() rotate()函数通过指定的角度参数使元素相对原点进行旋转. 它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度. 如果这个值为正值,元 ...
- c#入门系列——类和对象的代码实现
面向对象 说起面向对象,大家因该都听说过,也知道是一个编程的方法,简称oop技术.它将对象的算法和数据结构看作一个整体,而一个程序就是由多个对象结合的整体.这样做可以提高代码的复用率,提高了软件的可维 ...
- DirectX11中Shader的封装
引言 这个寒假学DirectX11的时候用的书是<Introduction to 3D Game Programming with DirectX 11>,里面关于Shader的部分全 ...
- 【Java深入研究】2、JVM类加载机制
一.先看看编写出的代码的执行过程: 二.研究类加载机制的意义 从上图可以看出,类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类 ...
- Frogs
Problem Description There are m stones lying on a circle, and n frogs are jumping over them.The ston ...