鍍金池/ 問(wèn)答/PHP/ PHP報(bào)錯(cuò):MySQL server has gone away

PHP報(bào)錯(cuò):MySQL server has gone away

PHP程序在執(zhí)行批量sql的時(shí)候偶爾報(bào)錯(cuò):MySQL server has gone away。
主要邏輯就是循環(huán)處理20個(gè)事務(wù),一個(gè)事務(wù)大概12個(gè)左右的sql,也就是一個(gè)流程下來(lái)估計(jì)有超過(guò)240個(gè)sql左右,偶爾會(huì)報(bào)錯(cuò),我看了超時(shí)時(shí)間設(shè)置:
clipboard.png
時(shí)間是充足的很,可是為什么還是會(huì)報(bào)錯(cuò)呢?
還有就是sql不存在大數(shù)據(jù)插入,所以不會(huì)是數(shù)據(jù)包超過(guò)限制而導(dǎo)致的,網(wǎng)上搜索的大體三種原因:
1、長(zhǎng)時(shí)間閑置導(dǎo)致連接斷開(kāi),這個(gè)排除
2、sql語(yǔ)句太長(zhǎng),數(shù)據(jù)包過(guò)大導(dǎo)致,這個(gè)排除
3、超時(shí)時(shí)間過(guò)短導(dǎo)致,這個(gè)排除

想破腦殼都想不到什么原因,測(cè)試了整個(gè)流程執(zhí)行時(shí)間平均不超過(guò)10秒 為啥呢?有木有大神指導(dǎo)一下

我用的是PDO方式連接,其實(shí)每次執(zhí)行sql之前都有判斷連接是否斷開(kāi)

clipboard.png

可是好像沒(méi)用

回答
編輯回答
挽歌

my.ini 文件,修改這三個(gè)值,沒(méi)有添加

max_allowed_packet = 500M

wait_timeout=288000

interactive_timeout = 288000
2018年5月23日 17:51
編輯回答
舊城人

mysql連接斷開(kāi),原因待定 。。。。 可能執(zhí)行有問(wèn)題,mysql強(qiáng)制斷開(kāi)了連接~

2018年2月24日 05:53
編輯回答
六扇門(mén)

你的mysql很忙,在干別的事。

2018年6月6日 22:15
編輯回答
詆毀你

使用 mysqli_ping(); 檢查連接狀態(tài),如果鏈接斷開(kāi)就重新連接;
$link_status = mysqli_ping($con);
if(false==$link_status)
{

//mysqli_connect

}
不知道這種方法對(duì)你是否有用。

試一下先獲取程序異常,再獲取pdo異常,看是不是程序執(zhí)行上有什么錯(cuò)誤

2017年9月10日 05:34