如何从客户端终止 php 连接?

Posted

技术标签:

【中文标题】如何从客户端终止 php 连接?【英文标题】:How to kill php connection from client side? 【发布时间】:2011-08-22 14:54:41 【问题描述】:

我正在使用 jquery 和 php

在客户端,用户可以关闭对话框,否则由于超时限制,它将停止 ajax 请求。

问题是mysql仍在继续处于“发送数据状态”的进程。 但是php进程不再可用,原因是:

set_time_limit(20);

有没有办法杀死与mysql进程的PHP::PDO连接?

谢谢阿曼。

【问题讨论】:

如果有的话我会很惊讶... 我不知道任何 php 函数/类、方法可以为您执行此操作,但如果您的 mysql 服务器位于同一主机上,我想您可以使用命令行为您执行此操作。您可以使用反引号 ` 使 php 执行命令行,或者查看 nl3.php.net/manual/en/function.shell-exec.php 纯粹出于好奇,你认为你会如何从命令行杀死 PHP MySQL 连接?通过杀死MySQL进程还是?这怎么可能用于超过 1 个用户? @michael: mysql 的kill 命令可以杀死查询和进程(例如登录/连接)。 好吧,Marc,使用 PHP 的 exec() 和 MySQL 的 kill,你将如何杀死仍处于“发送数据状态”的那个进程?我问这个问题的原因是概述我读到的建议是如何毫无意义的。但是,如果你能告诉我你是如何让它工作的 - 我真的很感激。 【参考方案1】:

听起来您正在使用持久数据库连接。有了这些,无论客户端是否实际连接,来自 mysqlphp 的连接都会保持活动状态。这允许查询继续运行并保持任何变量、锁、临时表等...保持活动状态并完成工作。

禁用持久连接,当客户端断开连接并随后 PHP 清理时,您的“卡住”查询将终止。

【讨论】:

感谢指点,但 PDO 默认有 dbh->getAttribute(PDO::ATTR_PERSISTENT)= false;

以上是关于如何从客户端终止 php 连接?的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket单工流 - 客户端如何关闭连接?

如何在等待 php 客户端脚本的回复时终止 php 服务器脚本? [复制]

如何确定客户端连接是不是在 Java 服务器的 TCP 套接字连接中终止?

当客户端在 write() 期间终止连接时,由对等套接字错误重置连接

c++ 服务器在客户端终止连接进程后不关闭 TCP 套接字连接

深入理解TCP/IP协议-TCP建立与终止连接