连接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对象创建连接
  1. for($i=0;$i<1000;$i++){
  2. $sock=stream_socket_client("www.baidu.com:80", $errno,$errstr,2);
  3. stream_set_timeout($sock,5);
  4. $meta=stream_get_meta_data($sock);
  5.  
  6. var_dump("start",$meta);
  7. fwrite($sock, "GET / HTTP/1.0\r\n\r\n");
  8.  
  9. $buf = '';
  10. while (true) {
  11. $s = fread($sock,1024);
  12. if (!isset($s[0])) {
  13. break;
  14. }
  15. $buf .= $s;
  16. }
  17. $meta=stream_get_meta_data($sock);
  18. var_dump("end",$meta,$sock);
  19. }
  1. string(5) "start"
  2. array(7) {
  3. ["stream_type"]=>
  4. string(14) "tcp_socket/ssl"
  5. ["mode"]=>
  6. string(2) "r+"
  7. ["unread_bytes"]=>
  8. int(0)
  9. ["seekable"]=>
  10. bool(false)
  11. ["timed_out"]=>
  12. bool(false)
  13. ["blocked"]=>
  14. bool(true)
  15. ["eof"]=>
  16. bool(false)
  17. }
  18. string(3) "end"
  19. array(7) {
  20. ["stream_type"]=>
  21. string(14) "tcp_socket/ssl"
  22. ["mode"]=>
  23. string(2) "r+"
  24. ["unread_bytes"]=>
  25. int(0)
  26. ["seekable"]=>
  27. bool(false)
  28. ["timed_out"]=>
  29. bool(false)
  30. ["blocked"]=>
  31. bool(true)
  32. ["eof"]=>
  33. bool(true)
  34. }
  35. resource(175) of type (stream)

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

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

 

[PHP] socket客户端时的超时问题的更多相关文章

  1. Python socket 客户端和服务器端

    connection, address = socket.accept() 调 用accept方法时,socket会时入“waiting”状态.客户请求连接时,方法建立连接并返回服务器.accept方 ...

  2. 【RL-TCPnet网络教程】第20章 RL-TCPnet之BSD Socket客户端

    第20章      RL-TCPnet之BSD Socket客户端 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...

  3. 基于Socket客户端局域网或广域网内共享同一短信猫收发短信的开发解决方案

    可使同一网络(局域网或广域网)内众多客户端,共享一个短信猫设备短信服务器进行短信收发,短信服务器具备对客户端的管理功能. 下面是某市建设银行采用本短信二次开发平台时实施的系统方案图: 在该方案中,考虑 ...

  4. HTTP 客户端接收数据超时

    本文使用两种方式测试HTTP 客户端读数据超时的情况,一种是直接使用golang自带的http库,另一种是使用martini web框架. 1. 测试1--直接使用http库 1.1.启动server ...

  5. 【爬坑】Python 3.6 在 Socket 编程时出现类型错误 TypeError: a bytes-like object is required, not 'str'

    1. 问题描述 Python 3.6 在 Socket 编程时出现错误如下 Traceback (most recent call last): File "F:/share/IdeaPro ...

  6. JAVA Socket 连接时长

    其实关于这个问题可能用到的人不会很多,不过我在这里还是说说. 正常很多人写socket通信时,都会直接通过new socket(IP,PORT)直接去链接服务器.其实这种做法也没有错误,但是若当服务器 ...

  7. socket模块实现基于UDP聊天模拟程序;socketserver模块实现服务端 socket客户端代码示例

    socket模块 serSocket.setblocking(False) 设置为非阻塞: #coding=utf-8 from socket import * import time # 用来存储所 ...

  8. java版简易socket客户端

    android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...

  9. c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library

    介绍 一个c++ socket 客户端库 http://www.rudeserver.com/socket/index.html The RudeSocket™ Open Source C++ Soc ...

随机推荐

  1. 最全的防火墙(firewalld)

    第1章  防火墙的介绍 1.1  防火墙的介绍 1.1.1 概念 动态管理防火墙服务(图形界面和linux界面都可以实现) 支持不同防火墙的区域信息 属于传输层次的防火墙 1.1.2 防火墙的默认规则 ...

  2. 分布式算法-一致性HASH

    分布式算法 参考: https://blog.51cto.com/alanwu/1431397 https://blog.csdn.net/kojhliang/article/details/8120 ...

  3. Golang 在电商即时通讯服务建设中的实践

    马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech ​即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等 ...

  4. Django 11

    目录 功能配置设计 跨站请求伪造CSRF 什么是CSRF 如果实现CSRF 如何避免CSRF CSRF相关的两个装饰器 auth模块 常用方法 扩展auth_user表中的字段 功能配置设计 实现类似 ...

  5. TOMCAT启动报错:org.apache.tomcat.jni.Error: 730055

    TOMCAT启动报错:org.apache.tomcat.jni.Error: 730055 具体原因:不清楚 解决方式:重启应用服务器后,再启动tomcat就可以了 欢迎关注公众号,学习kettle ...

  6. CodeForces - 556D Case of Fugitive (贪心+排序)

    Andrewid the Android is a galaxy-famous detective. He is now chasing a criminal hiding on the planet ...

  7. 北京国际机场T3行李运维平台开发记录

    说明 该项目是一个后台管理型网站项目,供北京国际机场T3航站楼行李调度运维部门使用,开发时间一个半月,我负责所有的前端开发.后端开发.API接口文档设计与编写.服务部署和交付. 整个网站具备的功能有: ...

  8. C#程序编写高质量代码改善的157个建议【16-19】[动态数组、循环遍历、对象集合初始化]

    前言   软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开 ...

  9. java读取地址数据文件

    在工作中遇到读取地址文件数据: 1.读取本地文件数据(如:D:\data.txt) //适用于读取绝对地址文件 public String getData(String path) { String ...

  10. 换了网线异常了,CRS无法正常启动,clssnmSendingThread: sending status msg to all nodes

    换了网线异常了,CRS无法正常启动,clssnmSendingThread: sending status msg to all nodes同事换网线前我将节点2正常关闭了,换完网线告诉我,发现节点2 ...