检测PHP中的用户中止/客户端断开连接

时间:2012-05-08 19:33:29

标签: php

最近,我们需要检测客户端突然从服务器中止/断开连接。突然间,我的意思是不一定通过浏览器的 STOP 按钮,实际上,客户端是通过POST发送的SOAP消息(使用 soapUI Ctrl + C )客户端一样简单。我们花了几天时间试图找到解决方案,直到找到方法。所以,这可能是一个隐含响应的问题,但目标是提供可以帮助许多其他人同样需要的信息。

以下是我们使用服务器检测客户端断开连接的基本代码:

<?PHP
ignore_user_abort(true);            // Continue running the script even when the client aborts/disconnects

sleep(5);                           // Sleep 5 seconds so we can stop the client before it recieves a reponse from the server

echo "RESPONSE sent to the client"; // Response to the Request
ob_flush();                         // Clean output buffer
flush();                            // Clean PHP's output buffer
usleep(500000);                     // Sleep half a second in order to detect if Apache's server sent the Response
echo " ";                           // Echo a blank space to see if it could be sent to the client
ob_flush();                         // Clean output buffer
flush();                            // Clean PHP's output buffer

if(connection_status() != 0) {      // Client aborted/disconnected abruptly
  return -1;
}
else {                              // Client recieved the response correctly
  return 0;
}

?>

1 个答案:

答案 0 :(得分:1)

PHP中的“ connection_aborted ”功能可以解决您的问题。

您可以在此link中看到函数语法和示例用法。