作者roga (任性)
看板PHP
标题Re: [请益] 当读取大量资料写入资料库时...程式会꘠…
时间Thu Mar 10 11:00:28 2011
※ 引述《ROCKIT (ROLL)》之铭言:
: 各位长官~~~
: 我最近要把大量的文字档资料写入资料库
: 在程式中已经做了set_time_limit(0)的动作
: 把PHP升级到5.3.5~~也多了garbage_collection的机制
: 改善了之前常常out of memory的问题
: 但是现在遇到更棘手的问题....
: 当程式跑了一段时间之後 会跳出
: Error 101 (net::ERR_CONNECTION_RESET):
: 之後我开的所有php程式就会中断...
: google之後 看到有人是改host档 但是好像也没用...
: 在我还是5.2.X版的时候 一个程式跑个几天都没甚麽问题
: 只是要parser资料的时候 常常因为物件的建立而out of memory
: 升级之後反而遇到这个我更没有idea的问题
: 请问有人有类似的经验吗?? 或者有其他解决方法可以提供我参考
: 先谢谢大家了!!
不太确定您的问题,不过依照叙述来猜测,你可以检查一下以下地方
1. 硬体方面:网路设备是否有问题
2. 软体方面:检查 MySQL 的环境设定,所有 MySQL 关於连线逾时的变数,
在 System Variables 这边可以看到
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html
可以先试着把逾时时间调长,例如 net_read_timeout, net_write_timeout,
interactive_timeout 和 wait_timeout 。以 net_read_timeout 为例,系统预设
只有 30 秒,write 则是 60 秒。不过你比较会遇到的情况应该是
interactive_timeout 和 wait_timeout ,但两者预设逾时值是 8 小时,如果真的
超过,那也卡太久了.. orz
建议可以在程式里面插 error_log 每塞一次资料就纪录下来当时的时间点,这样可以
看出塞资料进去的时间分布,也可以顺便看出来是否真的是因为资料的关系造成逾时。
另外,也要注意一下在 PHP 执行阶段中,MySQL 是否有被重新启动过。
--
The Internet: where men are men, women are men, and children are FBI agents.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.89.121.16