我们一直在尝试使用带有mod_php的Delphi Indy(SVN trunk)客户端和Apache。调用PHP脚本来注册关闭函数。
在测试期间,只有在脚本结束并且connection_status()
返回零时才会调用此关闭函数。
如果我在脚本执行期间使用CURL并按Ctrl-C,则CURL会发送一个TCP数据包,其RST标志设置为布尔值true。这会触发关闭功能,connection_status()
会返回一个。如果连接超时,则打开TCP FIN标志,但关闭函数不会触发 - 事实上,Apache进程进入CLOSE_WAIT直到PHP脚本执行完毕。如果我使用Indy,唯一设置的标志是FIN。
考虑到所有这些,我们可以让Indy发送一个RST标志设置为true的TCP数据包吗?我们希望在连接超时(解决我们正在测试的问题)时执行此操作。
答案 0 :(得分:0)
Indy总是尝试优雅地关闭连接,这不会发送RST标志。如果您需要,您必须自己强行关闭连接。