关于PHP中Socket连接及读写数据超时的问题
实习工作 2010-08-24 17:26:44 阅读199 评论0 字号:大中小 订阅
http://hi.baidu.com/chendezh2/blog/item/5a24112bcfde0af399250a13.html
虽然PHP中对fsockopen()方法有连接socket的超时参数,但是没有类似C中的连接成功后对数据的读写超时参数设置。没关系,PHP中对stream提供了一系列的方法以防止超时 stream_set_blocking( $fp , false )//设置数据流为阻塞模式,以防止数据没读完就退出 如果模式为 false, 给定的 socket 描述符将切换到非块模式, 如果为 true, 则切换到块模式. 这个效果类似于 fgets() 从 socket 读的情况. 在非块模式 fgets() 将会立即返回,而在块模式将等待数据满足要求. stream_set_timeout( $fp , 10 )//设置超时,应该在成功建立连接之后立即加上此句,后面的参数单位为秒 stream_get_meta_data( $fp )//从封装协议文件指针中取得报头/元数据,返回的是一个数组,其中格式为 Array ( [stream_type] => tcp_socket [mode] => r+ [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => ) 其中索引timed_out为超时信息,超时则为true,未超时则为false,我们可以籍由此来判断socket是否超时,需要注意的是此句应该加在每次需要等待的语句之后,比如fwrite(),fread(),并且每读一次,都要判断一次是否超时,而对于一个连接只需一次超时设置stream_set_timeout( $fp , 10 )就可以了 代码: $fp = @fsockopen( $ip , $port, $errNo , $errstr, 30 ); if( !$fp ) { return false; } else { stream_set_timeout( $fp , 3 ) ; //发送数据 fwrite( $fp , $packet ) ; $status = stream_get_meta_data( $fp ) ; //发送数据超时 if( $status['timed_out'] ) { echo "Write time out" ; fclose( $fp ); return false; } //读取数据 $buf = fread( $fp , 16 ) ; $status = stream_get_meta_data( $fp ) ; //读取数据超时 if( $status['timed_out'] ) { echo "Read time out" ; fclose( $fp ); return false; } }
|
分享到:
相关推荐
在IT行业中,PHP Socket编程是一种常见且强大的技术,它允许服务器和客户端之间建立低级别的网络通信。本项目“php socket聊天室”显然旨在利用PHP的Socket功能创建一个实时的在线聊天平台,使得用户可以通过Web...
在PHP编程中,Socket是一种低级别的、原始的网络通信接口,允许程序员进行进程间网络通信。Socket主要用于在不同机器之间创建TCP/IP连接,是互联网应用的基础。本篇将深入探讨如何利用PHP的Socket功能来构造POST和...
**PHP Socket 编程实例详解** 在Web开发中,Socket编程是一种基础且强大的技术,它允许服务器和客户端之间进行低级别的通信。PHP作为一款广泛使用的服务器端脚本语言,也支持Socket编程,使得开发者能够创建高效、...
php socket client class 能多次发送信息, 有异常处理。
在IT领域,PHP Socket编程是一种常见且强大的技术,它允许PHP程序与服务器进行低级别的通信,比如创建TCP/IP连接、监听网络端口等。本文将深入探讨“运行PHP Socket”这一主题,涵盖其基本概念、用途、实现方法以及...
在IT行业中,PHP Socket是一种强大的通信工具,它允许PHP应用程序与其他服务器进行低级网络通信。本文将深入探讨PHP Socket的工作原理、实现流程以及如何通过PHP编写简单的Socket程序。 首先,理解PHP Socket的基本...
workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...
delphi socket call php socket 例子,可根据需要扩展写成聊天室、网站助理类似淘宝助理,有订单提醒。 <?php //确保在连接客户端时不会超时 set_time_limit(0); $port = 10081 ; $ip = '192.168.1.102'; // ...
在IT行业中,PHP Socket编程是一种常见的技术,用于创建网络应用程序,允许服务器和客户端进行低级通信。本资源包包含了相关的代码示例和文档,旨在帮助开发者深入理解和实践PHP Socket编程。 首先,`PHP的socket....
PHP Socket API提供了socket_create、socket_connect、socket_write、socket_read等函数,用于创建套接字、连接到远程服务器、发送和接收数据。 4. PHP Socket应用: - Web服务器通信:通过PHP Socket,可以实现...
【PHP Socket开发基础详解】 PHP Socket开发涉及到网络通信的基础,主要使用Berkley的socket库。Socket在PHP中被理解为一个数据结构,用于启动客户端和服务器之间的通信会话。服务器端持续监听特定端口,等待客户端...
workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...
### PHP Socket 基础编程知识点详解 #### 标题:PHP Socket 基础编程 此标题指的是一本适合初学者了解和学习 PHP Socket 编程的基础指南。 #### 描述:一本有利于刚开始接触 PHP Socket 编程的基础教程。 这本...
在构建实时在线聊天系统时,Flash、PHP和Socket技术的结合使用可以实现高效的数据传输和交互。本项目标题“Flash PHP Socket在线聊天”表明我们正在探讨一个基于这些技术的聊天应用。下面将详细阐述这三个关键组件...
在PHP编程中,Socket通信是一种低级别的网络编程接口,它允许程序直接与网络进行交互,实现客户端和服务器之间的数据传输。在本场景中,我们关注的是如何使用PHP的Socket功能来发送HTML电子邮件。"php socket邮件...
在深入PHP Socket的讲解与实例分析中,首先应当了解套接字(Sockets)的基本概念。Sockets是一种网络通信的端点,可被用于客户端和服务器之间的通信。在PHP中,Socket的编程不是非常普及,但其功能强大,可以让...
PHPSocket.IO 是 socket.IO 的php版本,基于workerman开发。用于替代socket.IO服务端,方便用PHP开发socket.IO即时通讯应用。 实例代码:use PHPSocketIO\SocketIO; // listen port 2021 for socket.io ...
【标题】:“PHP Socket与cURL详解” 在Web开发中,PHP Socket和cURL是两种常用的网络通信工具,它们在处理HTTP请求、数据传输等方面扮演着重要角色。本篇文章将深入探讨这两种技术,并通过实例来解析它们的工作...
在PHP中实现Socket通信,我们可以创建服务器(Server)和客户端(Client)来完成进程间的交互。下面将详细介绍如何用PHP实现Socket以及相关的知识点。 1. **PHP Socket基本概念** PHP中的Socket功能是通过`socket`...
"PHP Socket UDP实时在线云消费机服务器端源码"是一个实例,它展示了如何利用PHP进行UDP协议的网络编程,以实现一个实时的在线云消费机服务器端。下面我们将深入探讨这个主题。 首先,`Socket`是计算机网络编程中的...