作者cgcheng (..)
看板PHP
标题Re: [请益]MySQL Connection 何时建立比较妥
时间Thu Dec 15 14:55:16 2011
要 keep connection 其实 ok,不过 mysql 有一个设定需要注意
就是有个 idle 时间就会把 connection 踢掉的设定
当你用 mysql 的 command 连到 mysql,接着你就把它丢在那不管,
隔一天你在去下 sql 时,你也许会发现他会有一串讯息表示他又去
reconnect mysql,原因是因为原本的 connection idle 太久被踢掉
预设的时间我记得好像还蛮长的,但是有的 DBA 会怕你占着不放,会
去调短这个时间,这时候问题可能就会发生,当你使用同一个 socket
对它作操作,但其实有可能这个操作会 fail,所以 error handling
要作,不过要做得好也要花些功夫
这种连线断掉的问题,通常系统不会主动告知你,通常是对连线作操作
时才会知道
很多人写程式,通常只会假设说执行一定会成功,就算用了 design
pattern 看起来好像乾乾净净,漂漂亮亮,但是其实 error handling
还是没做好
抱歉,跟原作者想问的也许无关,出自於一点提醒
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.15.55
1F:推 sunz5010:感谢你的提醒、刚刚我针对这个去测试了一下,确实如果 12/15 15:01
2F:→ sunz5010:wait_connect 这个数字太小时,如果class在过程中处理其 12/15 15:02
3F:→ sunz5010:它事情(非SQL),接着要再使用connect就会出现server 12/15 15:03
4F:→ sunz5010:has gone away的现象 12/15 15:03
5F:推 sunz5010:还在思考怎麽处理比较好ing~ 12/15 15:06
6F:→ cgcheng:最简单的方式是设定值永远够大让你把事情处理完 12/15 15:09
7F:→ cgcheng:当问题issue是已知的,也许它就在也不是问题 12/15 15:10
8F:→ cgcheng:不过都太大好像也是会有resource占着的风险啦 12/15 15:10
9F:→ cgcheng:就给你自己决定处理了,贫僧只是多嘴 12/15 15:11
10F:推 sunz5010:还是谢谢你^^ 你提出的重点是我未曾想到的 12/15 15:12
11F:→ MOONRAKER:我们有过一个案子就死在这上面,一大堆没自动关闭的conn 12/15 15:18
12F:→ MOONRAKER:挂在上面,connection full造成错误。不过那是Microsoft 12/15 15:18
13F:→ MOONRAKER:SQL Server,但是原理一样。 :P 12/15 15:18
14F:推 mervynW:建了也要断线啊. 不能射後不理...这样是不好的. 12/15 15:27
15F:推 sunz5010:再请教一个小问题、connect会不会随着object生命周期过了 12/15 15:31
16F:→ sunz5010:之後自己close掉? 12/15 15:31
17F:推 mervynW:不会!! 请在 __dest 里写断线 12/15 15:32
18F:推 sunz5010:嗯嗯、那有解开我的疑问了~谢谢^^ 12/15 15:33
19F:推 mervynW:ps. persistent connection 不会自己断. 12/15 15:35
20F:→ mervynW:connect 会. 12/15 15:35
21F:→ mervynW:php/features.persistent-connections.html 12/15 15:41