首页 > 解决方案 > 如何调试冻结而不返回错误的脚本?(更新 SQL 表 - 大约 1.5 小时的过程)

问题描述

我有一个脚本,我可以设置它在 X 项数据上运行,处理每个项目的数据,并使用处理后的数据更新数据库表。

它在 500 个数据项(大约 2 分钟)和 2500 个数据项(大约需要 10 分钟)上成功运行,但是对于 20,000 个数据项,它在大约一小时后冻结(应该在大约 1.5 小时内完成)

我无法发布代码,因为脚本太大而且我什至不确定它是否重要,并且无论如何它在运行时间较短时运行良好。主要问题是如何调试此类问题?

没有显示 PHP 错误日志(如果有其他错误,它们会显示),也没有在 MYSQL 错误日志中看到错误。

该脚本只是停止更新其处理日志,这意味着它不再向表中插入记录,即使它应该。然后我只能杀死它,然后我会在我的 sql 日志中看到错误,例如:

[警告] Aborted connection 192356 to db: 'db' user: 'user' host: 'localhost' (读取通信数据包时出错)

标签: phpdebugging

解决方案


你可以使用 xdebug。Xdebug 是 PHP 的一个扩展,用于协助调试和开发。您可以在 Linux 和 macOS1 上通过 PECL 安装 Xdebug。您可以使用 PECL 安装 Xdebug:

pecl 安装 xdebug

完成后,您仍然需要将正确的行添加到您的 php.ini

zend_extension="/usr/local/php/modules/xdebug.so"


推荐阅读