[PHP]socket的连接超时 与 读取/写入超时
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()创建的有效上下文资源。
相关文章
- MagicAjax 使用介绍(翻译)
- 第三产业的企业的信息化系统的价格机制
- MagicAjax 简单使用介绍(翻译)
- (转帖)asp.net调试错误解决方法收集(1)
- MagicAjax Features (MagicAjax特点 0.30版) (翻译)
- 疑是Microsoft Enterprise Library June 2005的一个小bug (续)
- 疑是Microsoft Enterprise Library June 2005的一个小bug
- MagicAjax 0.30版的更新(翻译)
- 【愚公系列】2022年12月 .NET CORE 即时通讯-使用SignalR进行井字游戏
- Winform自动更新之AutoUpdater.NET
- [MySQL] 理解InnoDB并发高的原因
- 自己动手基于 Redis 实现一个 .NET 的分布式锁类库
- [MySQL] in 子查询出现DEPENDENT SUBQUERY问题
- [MySQL] group by 聚合函数的原理和聚合限制原因SELECT list is not in GROUP BY clause and contains nonaggregated column
- [MySQL]mysql的ANY_VALUE()函数 解决 ONLY_FULL_GROUP_BY 模式
- [日常]windows下kill进程工具taskkill
- [CSS] 纯CSS的前端图标icon库并且修改大小和颜色
- [PHP] php中的索引数组和数组顺序问题
- [日常] 修改编辑word中的页眉页脚
- [nginx]配置nginx支持websocket解决返回400错误问题