国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

在AsyncTcpConnection中,關(guān)于checkConnection的觸發(fā)問題

xxfxxfxxfxxf

源碼:
$this->_socket = stream_socket_client("{$this->transport}://{$this->_remoteAddress}", $errno, $errstr, 0,
STREAM_CLIENT_ASYNC_CONNECT);

。

Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'checkConnection'));

請(qǐng)問,我故意把remoteAddress寫成一個(gè)無效的地址,如3.3.3.3:3333,EV_WRITE的監(jiān)聽還是在4秒左右觸發(fā)了checkConnection,這是為什么呢???

2974 3 0
3個(gè)回答

xiuwang

為啥寫一個(gè)無效地址就不能觸發(fā)checkConnection?

  • xxfxxfxxfxxf 2019-12-06

    我的理解是EV_WRITE監(jiān)聽管道是否可寫,而無效的地址沒有形成管道,怎么會(huì)可寫呢?

  • xxfxxfxxfxxf 2019-12-06

    還有為什么是4秒左右觸發(fā)checkConnection呢?

xxfxxfxxfxxf

<?php
global $eb,$client,$time;
$time=time();
$eb=new EventBase();
$timer=new Event($eb,-1,Event::TIMEOUT,function()use(&$timer){
$timer->add(1);
});
$client=stream_socket_client("tcp://3.3.3.3:2222",$errcode,$errstr,0,STREAM_CLIENT_ASYNC_CONNECT);
$et=new Event($eb,$client,Event::WRITE,function($client){
global $time;
echo time()-$time;
});
$et->add();
$timer->add(1);
$eb->loop();

我寫的一個(gè)測(cè)試用例,發(fā)現(xiàn)不是4秒,是7秒觸發(fā)的

  • 暫無評(píng)論
xxfxxfxxfxxf

具體細(xì)節(jié)不知道,但是大概原因知道了,因?yàn)?proc/sys/net/ipv4/tcp_syn_retries的含義是重發(fā)SYN包的次數(shù),而我的虛擬機(jī)這個(gè)值是2,第一次3秒,第二次4秒,這兩次發(fā)完后,認(rèn)為這個(gè)連接已經(jīng)失敗了,發(fā)了一個(gè)信號(hào)(FIN?)給event,所以觸發(fā)了checkConnection。細(xì)節(jié)我再想辦法了解下。

  • xxfxxfxxfxxf 2019-12-06

    這個(gè)信號(hào)(FIN?)不光觸發(fā)了WRITE,還可以觸發(fā)READ,測(cè)試得出來得結(jié)果。

  • xxfxxfxxfxxf 2019-12-06

    (第一次)1 + (第二次)2 + (才確認(rèn)連接失?。? =7 秒

年代過于久遠(yuǎn),無法發(fā)表回答
??