socket处理时有两种超时 , 分为连接超时 和 读取/写入数据超时

1. stream_socket_client 函数中的超时时间是连接超时 , 默认是php.ini中的default_socket_timeout配置项

2. stream_set_timeout() 函数设置的是 读取/写入数据超时

3. default_socket_timeout配置项也控制file_get_contents的超时时间

PHP文档中对该函数的解释:

stream_socket_client ($remote_socket [,&$errno [,&$errstr [,$timeout = ini_get("default_socket_timeout") [,$flags = STREAM_CLIENT_CONNECT [ $context ]]]]] )

1.remote_socket 要连接到的套接字的地址。
  对于Internet域套接字(AF_INET)(如TCP和UDP),remote_socket参数的目标部分应包含主机名或IP地址,后跟冒号和端口号。对于Unix域套接字,目标部分应指向文件系统上的套接字文件。

注意:默认情况下,流将以阻塞模式打开。您可以使用stream_set_blocking($stream,1)将其切换到非阻塞模式。如果 mode 为0,资源流将会被转换为非阻塞模式;如果是1,资源流将会被转换为阻塞模式。 该参数的设置将会影响到像 fgets() 和 fread() 这样的函数从资源流里读取数据。 在非阻塞模式下,调用 fgets() 总是会立即返回;而在阻塞模式下,将会一直等到从资源流里面获取到数据才能返回。

2.errno 如果连接失败,将设置为系统级错误号。
3.errstr 如果连接失败,将设置为系统级错误消息。
4.timeout connect()系统调用应该超时之前的秒数。 默认是php.ini中的default_socket_timeout配置项

注意:此参数仅在不进行异步连接尝试时适用。
注意: 要设置通过套接字读取/写入数据的超时,请使用stream_set_timeout(),因为仅在连接套接字时才应用超时。

5.flags 位掩码字段,可以设置为连接标志的任意组合。目前,连接标志的选择仅限于STREAM_CLIENT_CONNECT(默认值),STREAM_CLIENT_ASYNC_CONNECT和STREAM_CLIENT_PERSISTENT。 
6.context 使用stream_context_create()创建的有效上下文资源。

[PHP]socket的连接超时 与 读取/写入超时的更多相关文章

  1. (五)HttpClient 连接超时及读取超时

    第一节: HttpClient 连接超时及读取超时 HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间: HttpClient连接 ...

  2. C# Socket.Connect连接请求超时机制

    介绍 您可能注意到了,.Net的System.Net.Sockets.TcpClient和System.Net.Sockets.Socket都没有直接为Connect/BeginConnect提供超时 ...

  3. HttpClient连接超时及读取超时

    HttpClient连接超时及读取超时 httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间: HttpClient连接时间 所谓连接的时候 是HttpClient发送请求 ...

  4. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

  5. 深度分析 [go的HttpClient读取Body超时]

    故障现场 本人负责的主备集群,发出的 HttpClient 请求有 30%概率超时, 报context deadline exceeded (Client.Timeout or context can ...

  6. 【Socket】关于socket长连接的心跳包

    TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...

  7. Socket长连接和短连接的区别

    https://blog.csdn.net/jasonjwl/article/details/52085264 短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进 ...

  8. socket长连接和短链接区别

    短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接.短连接是指SOCKET连接后发送后接收完数据后马上断 ...

  9. socket长连接 GCDAsyncSocket

    基础: http://www.2cto.com/kf/201609/546974.html 转自: http://blog.csdn.net/u013282507/article/details/52 ...

随机推荐

  1. JWPlayer快速入门指南(中文)

    将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页 ...

  2. bzoj4331: JSOI2012 越狱老虎桥

    Description 这里,是美丽的南京:这里,是秀美的进香河:这里是安逸的老虎桥.  如果说进香河的美,美在其秀美的风光,倒不如说是美在了那惬意的南京古典小巷式生活.如果说进香河的迷人,在其淳朴的 ...

  3. 【ZZ】国外大型网站使用到编程语言 | 菜鸟教程

    http://www.runoob.com/w3cnote/rogramming-languages-used-in-most-popular-websites.html 下图展示了大型网站使用到的后 ...

  4. [转]Web 调试工具之 Advanced REST client

    原文:http://bbs.itcast.cn/forum.php?mod=viewthread&tid=85654 安装方式: 3.1. 如果你能FQ访问谷歌商店,那么就简单了 在这里直接安 ...

  5. c#中变量的作用域

    C#中的作用域和javascript中的作用域还是有区别的.呵呵 class Person { /* *确定C#变量作用域的2个规则. 1.类的字段所处的作用域等同于该字段所属类所在的作用域; * 2 ...

  6. Maven的依赖机制介绍

    以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_manage_dependencies.html: ...

  7. Vue基础知识之过滤器(四)

    过滤器 1.过滤器的用法,用 '|' 分割表达式和过滤器. 例如:{{ msg | filter}} {{msg | filter(a)}} a就标识filter的一个参数. 用两个过滤器:{{msg ...

  8. oracle9i-11.2安装包及补丁包下载链接

    ORACLE 9i Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XPhtt ...

  9. js 各种距离

    网页可见区域宽  document.body.clientWidth  网页可见区域高  document.body.clientHeight  网页可见区域宽(包括边线的宽)  document.b ...

  10. C# JSON 序列化

    1.JavaScriptSerializer System.Web.Extensions.dll System.Web.Script.Serialization命名空间 Serialize Deser ...