加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[PHP] socket客户端时的超时问题

发布时间:2021-05-21 06:53:54 所属栏目:大数据 来源: https://www.jb51.cc
导读:连接socket分为连接超时和读取超时 $sock=stream_socket_client("www.google.com:80",?$errno,$errstr,2);? ? 那个数字是连接超时,比如连接google,2秒就返回错误,这样就不会一直等在那了stream_set_timeout($sock,5);? 这个数字是读取数据的超时?stream_get_

连接socket分为连接超时和读取超时

$sock=stream_socket_client("www.google.com:80",?$errno,$errstr,2);? ? 那个数字是连接超时,比如连接google,2秒就返回错误,这样就不会一直等在那了 stream_set_timeout($sock,5);? 这个数字是读取数据的超时 ? stream_get_Meta_data 可以在socket中返回元数据 ? 比如下面的测试,因为http协议连接完就会被服务端断掉,所以没办法使用长连接一直传输数据,需要在循环中不停的new对象创建连接
for($i=0;$i<1000;$i++){
    $sock=stream_socket_client("www.baidu.com:80",$errno,1)">$errstr,2);  
    stream_set_timeout($sock,5); 
    $Meta=stream_get_Meta_data($sock);

    var_dump("start",1)">$Meta);
    fwrite();

    $buf = '';
    while (true) {
        $s = fread();
        if (!isset($s[0])) {
            break;
        }
        $buf .= $s;
    }
    var_dump("end",1)">$Meta,1)">);
}
string(5) "start"
array(7) {
  ["stream_type"]=>
  string(14) "tcp_socket/ssl"
  ["mode"]=>
  string(2) "r+"
  ["unread_bytes"]=>
  int(0)
  ["seekable"]=>
  bool(false)
  ["timed_out"]=>)
  ["blocked"]=>)
  ["eof"]=>)
}
string(3) "end"
resource(175) of type (stream)

其中的timed_out就是读取数据的超时,false为读取没超时

eof为是否已经到了文件尾,如果是长连接这里是不会到达文件尾的,http协议这种短连接会读完后连接就结束了

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读