小编给大家分享一下php socket设置超时的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

为高阳等地区用户提供了全套网页设计制作服务,及高阳网站建设行业解决方案。主营业务为做网站、成都网站建设、高阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
php socket设置超时的方法:首先如果【$waitAckSec=0】,则返回成功发送的字节;然后如果【$waitAckSec】大于0,则返回发送后接收到得内容;最后任何情况下,失败都返回FALSE。
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 socket设置超时的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
Copyright © 2009-2022 www.fjjierui.cn 青羊区广皓图文设计工作室(个体工商户)达州站 版权所有 蜀ICP备19037934号