小編給大家分享一下php socket設置超時的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
為高陽等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及高陽網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都網(wǎng)站建設、高陽網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
php socket設置超時的方法:首先如果【$waitAckSec=0】,則返回成功發(fā)送的字節(jié);然后如果【$waitAckSec】大于0,則返回發(fā)送后接收到得內(nèi)容;最后任何情況下,失敗都返回FALSE。
php socket設置超時的方法:
php創(chuàng)建socket的方法和設置超時的方法,貼出來分享一下
//如果$waitAckSec=0,則返回成功發(fā)送的字節(jié) //如果$waitAckSec大于0,則返回發(fā)送后接收到得內(nèi)容 //任何情況下,失敗都返回FALSE function sendUdp($host, $port, $buff,$waitAckSec=0) { $socket = ($result = @socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)); //發(fā)送超時1秒 socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) ); //接收超時6秒 socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>6, "usec"=>0 ) ); if($socket){ $result = @socket_sendto($socket,$buff,strlen($buff),0,$host,$port); if($waitAckSec>0){ $result = FALSE; $read = array($socket); $write = NULL; $except = NULL; if(@socket_select($read,$write,$except,$waitAckSec)>0){ $fromHost = ""; $fromPort = 0; @socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort); $result = phpext_unpack($result); if($result["needAck"] == 1){ $this->sendUdp($host, $port, $result["ackdata"]); if(isset ($result['data']['list']) && isset ($result['data']['totalCount'])){ $list = $result['data']['list']; $count = $result['data']['totalCount']; while($count> count($list)){ @socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort); $result_temp = phpext_unpack($result_temp); $this->sendUdp($host, $port, $result_temp["ackdata"]); $list = array_merge($list,$result_temp['data']['list']); } $result['data']['list'] = $list; } }else{ @socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort); $result = phpext_unpack($result); if($result["needAck"] == 1){ $this->sendUdp($host, $port, $result["ackdata"]); if(isset ($result['data']['result']) && isset ($result['data']['userID'])){ $list = $result['data']['list']; $count = $result['data']['totalCount']; while($count> count($list)){ @socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort); $result_temp = phpext_unpack($result_temp); $this->sendUdp($host, $port, $result_temp["ackdata"]); $list = array_merge($list,$result_temp['data']['list']); } $result['data']['list'] = $list; } } } }else{ $result = SEND_UDP_ERROR; } } @socket_close($socket); } return $result; }
以上是php socket設置超時的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!