PHP不会关闭与数据库(odbc)的连接


PHP doesn't close connections to database (odbc)

我有一个API服务,使用odbc_connect, odbc_exec从数据库加载数据。

我有一个100行查询,我决定将其移动到存储过程中。服务请求数约为每秒10个。

那么问题是什么:当使用像SELECT smthng这样的常规查询时,一切工作正常,当在过程服务中使用相同的SELECT时,开始响应非常慢。它是由于数据库中有很多打开的连接没有关闭而导致的。

odbc_execodbc_fetch之后,我直接尝试了odbc_close_all -没有帮助。

SELECT count(*)
FROM master..sysprocesses
WHERE suid > 0

返回500个连接。

我也试着设置

SET PROC_RETURN_STATUS OFF

手册中的页面说:

如果有打开的事务,这个函数将失败连接。在这种情况下,连接将保持打开状态。

我认为这解释了你所面临的行为。我认为,当存储过程将完成它的工作,losted连接将死亡。无论如何,你的情况需要做一些调查。