php socket如何设置超时时间

互联网 20-9-7

php socket设置超时时间的方法:【socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>6, "usec"=>0))】。

【相关学习推荐:php编程(视频)】

php socket设置超时的方法:

php创建socket的方法和设置超时的方法,贴出来分享一下

//如果$waitAckSec=0,则返回成功发送的字节     //如果$waitAckSec大于0,则返回发送后接收到得内容     //任何情况下,失败都返回FALSE     function sendUdp($host, $port, $buff,$waitAckSec=0) {         $socket = ($result = @socket_create(AF_INET,SOCK_DGRAM,SOL_UDP));         //发送超时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培训栏目!

以上就是php socket如何设置超时时间的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 超时时间
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Apache下php文件被禁止直接访问怎么办

相关资讯