TCP读取为空的问题

xxfxxfxxfxxf

TcpConnection.php 源码中

if ($buffer === '' || $buffer === false) {
            if ($check_eof && (feof($socket) || !is_resource($socket) || $buffer === false)) {
                $this->destroy();
                return;
            }
        } else {
            $this->bytesRead += strlen($buffer);
            $this->_recvBuffer .= $buffer;
        }

把$buffer = '';这种情况忽略了,请教
问题一:哪些情况会造成fread为空即$buffer = ''?
问题二:workerman是否无法判断断电情况?

2086 1 0
1个回答

walkor 打赏

连接断开的时候$buffer = ''
不仅是workerman,其它socket服务都无法即时检测断电的情况,断电断网这种极端情况都是用心跳来检测的。

  • xxfxxfxxfxxf 2019-12-26

    谢谢大大秒回,既然连接断开时为空,为什么不直接destory()呢,为什么$buffer=false;要destory()呢?

  • walkor 2019-12-26

    为空也destroy

  • xxfxxfxxfxxf 2019-12-26

    好的,我再想想,谢谢walkor大大

年代过于久远,无法发表回答
×
🔝