大佬教程收集整理的这篇文章主要介绍了如何知道PHP中的对等点何时重置连接?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要的是stream_socket组中的socket_last_error等价物,这样我就可以知道何时关闭与客户端的连接.当前情况所有进程都会等待超时计时器释放,即使客户端已经关闭.
我搜索过网络,发现没有办法通过php弄明白,我发现有些人打开了关于它的问题票,要求socket_last_error等效于流.
https://bugs.php.net/bug.php?id=34380
所以无论如何都知道FIN_WAIT信号何时被提升?
谢谢,
我尝试制作一个非常hackish的解决方案,我不知道它是否适合你,它不是很可靠:
<?php set_error_handler('my_error_handler'); function my_error_handler($no,$str,$file,$linE) { throw new ErrorException($str,$no,$linE); } $socket = stream_socket_server("tcp://0.0.0.0:8000",$errno,$errstr); if (!$socket) { echo "$errstr ($errno)\n"; } else { while ($conn = stream_socket_accept($socket)) { foreach (str_split('The local time is ' . date('n/j/Y g:i a') . "\n") as $char) { echo $char; try { fwrite($conn,$char); } catch (ErrorException $E) { if (preg_match("/^fwrite\(\): send of 1 bytes failed with errno=([0-9]+) ([A-Za-z \/]+)$/",$e->getmessage(),$matches)) { list($errno,$errstr) = array((int) $matches[1],$matches[2]); if ($errno === 32) { echo "\n[ERROR] $errstr"; // Broken pipe } } echo "\n[ERROR] Couldn't write more on $conn"; break; } fflush($conn); } fclose($conn); } fclose($socket); } echo "\n"; ?>
连接:nc localhost 8000 |头-c1
服务器输出:
The loca [ERROR] Broken pipe [ERROR] Couldn't write more on resource id #6
以上是大佬教程为你收集整理的如何知道PHP中的对等点何时重置连接?全部内容,希望文章能够帮你解决如何知道PHP中的对等点何时重置连接?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。