我有一个Zend / PHP脚本,它从一个MySQL DB中的表读取行,转换数据,并将行添加到另一个MySQL DB中的第二个表。
因为我正在调试脚本,所以在抛出错误之前它已经越来越少了。现在,在添加60行后,它会退出。一开始它增加了300多行。源数据没有改变。
我已经尝试了......在每一代代码中捕获块并且我没有得到任何东西,只是一个通用的“破坏”样式错误 - 它可能会在Zend Framework中抛出错误而不是抓住了,但我不明白与正在添加的行的关系。
它实际上从添加83行到80到74到63到60 ......之间没有代码更改。我在尝试之间清空了目标数据库。我已经优化并刷新了数据库,我重新启动了MySQL,我重新启动了整个DARN SERVER ......它坚持使用相同的模式。
对我能看到或尝试的东西有任何猜测吗?
答案 0 :(得分:0)
必须在磁盘上(或您未考虑的其他计算机上)某处累积数据,否则您不会在重新启动时看到减速。我猜想内存泄漏会占用虚拟机并逐渐迫使机器进行大量交换,从而减慢速度 - 但同样,重启之后不应该持续存在。
假设你没有碰到一些时髦的硬件错误,就像奔腾4或更新的CPU上的冷却,导致CPU本身逐渐升温并作为响应减速,使你的脚本能够做得更少,在碰到PHP中配置的脚本执行时间限制之前,工作量会减少。
答案 1 :(得分:0)
问题原来是MySQL中的某种内存泄漏 - 在说服它们升级到更加21世纪的版本后,问题就消失了。在这样做之前,我们确实验证了内存泄漏。