Mysql PHP在长脚本期间删除连接

Mysql PHP在长脚本期间删除连接,php,mysql,mysqli,Php,Mysql,Mysqli,我遇到了一个似乎无法解决的问题,它涉及到由于数据库连接失败而无法完成的长php脚本 我正在使用PHP5.5.25和MySQL 5.6.23以及mysqli接口 该脚本使用TCPDF库创建财务报告的PDF。总的来说,它运行良好。但是,当数据集变大时(报告可以迭代多个帐户以创建一个包含所有符合条件的帐户的多页报告),它将在大约30秒后失败(不完全是30秒,有时时间戳会多出几秒)。它似乎可以运行大约25-35个循环,但更多的是会导致问题 我不认为这是一个超时的问题(尽管它当然可以)。我已经将PHP设置

我遇到了一个似乎无法解决的问题,它涉及到由于数据库连接失败而无法完成的长php脚本

我正在使用PHP5.5.25和MySQL 5.6.23以及mysqli接口

该脚本使用TCPDF库创建财务报告的PDF。总的来说,它运行良好。但是,当数据集变大时(报告可以迭代多个帐户以创建一个包含所有符合条件的帐户的多页报告),它将在大约30秒后失败(不完全是30秒,有时时间戳会多出几秒)。它似乎可以运行大约25-35个循环,但更多的是会导致问题

我不认为这是一个超时的问题(尽管它当然可以)。我已经将PHP设置为相当多的资源来处理这个问题

max_execution_time = 600 
memory_limit = 2048M

该脚本确实以每秒数百次的查询对数据库造成了很大的冲击。从数据库的一些统计数据中可以看出,一次只有两个活动连接,因此我似乎没有接近150个最大连接的默认设置

这就是我在使用大型数据集最终失败时遇到的错误

警告:mysqli::mysqli():(HY000/2002):无法在中分配请求的地址

致命错误:数据库连接失败:无法在中分配请求的地址

是否有人对导致脚本最终无法连接到DB并无法完成的原因有任何建议?我尝试过寻找一些答案,但到目前为止,我发现的关于数据库连接失败的几乎所有东西都无法连接,而不是无法通过大型脚本中途连接

提前谢谢你的建议

我不认为这是一个超时的问题

你应该知道

奇怪的是,这个问题在执行开始后这么久才出现。检查超时时间是否会如此困难?试着改变它?要在代码中添加一些日志记录吗

您应该检查的另一件事是脚本是否正在打开单个连接并重用它,还是不断打开新连接

在没有看到代码的情况下,很难说清楚,但是一个脚本每秒执行数百个查询,持续数十秒,听起来像是SQL和PHP逻辑之间的分离被考虑得非常糟糕

我不认为这是一个超时的问题

你应该知道

奇怪的是,这个问题在执行开始后这么久才出现。检查超时时间是否会如此困难?试着改变它?要在代码中添加一些日志记录吗

您应该检查的另一件事是脚本是否正在打开单个连接并重用它,还是不断打开新连接


在没有看到代码的情况下,很难说清楚,但是一个脚本每秒执行数百个查询,持续数十秒,这听起来像是SQL和PHP逻辑之间的分离被考虑得非常糟糕。

Duplicate of???“脚本每秒执行数百个查询,对数据库的影响非常大。”您是否为每个连接打开不同的连接?因为它可能是连接的数量。每个PHP页面最多只打开一个。我认为这可能会有所帮助:这不是
显示变量名所在的变量('interactive_timeout','wait_timeout')30秒或60秒这一事实听起来很可疑,至少在共享托管环境中,这能回答您的问题吗?重复的??“脚本以每秒数百个查询的速度对数据库造成了相当大的冲击。”您是否为每个查询打开了不同的连接?因为它可能是连接的数量。每个PHP页面最多只打开一个。我认为这可能会有所帮助:这不是
显示变量名所在的变量('interactive_timeout','wait_timeout')30秒或60秒这一事实听起来很可疑,至少在共享托管环境中,这能回答您的问题吗?它是不断打开多个连接,而不是使用单个连接。我相信逻辑可以写得更好,但这个脚本确实生成了一份100多页的pdf报告,每页都有一个图表,对财务数据进行切片和切分,以使非会计人员能够理解。我一个月运行一次,所以在这100秒的时间里,我不太担心对服务器造成那么大的冲击。它是不断打开多个连接,而不是使用单个连接。我相信逻辑可以写得更好,但这个脚本确实生成了一份100多页的pdf报告,每页都有一个图表,对财务数据进行切片和切分,以使非会计人员能够理解。我一个月运行一次,所以在100秒的时间里,我不太担心对服务器造成那么大的冲击。