2 sa11sa sa11sa 于 2016.05.09 11:38 提问

PHP socket 心跳检测,重新链接怎么写?

我这边只是客户端. 为预防服务端断线情况, 需增加心跳机制来重连. 具体代码不知道怎么整

主要代码如下:

$fp = stream_socket_client("tcp://{$host}:{$port}", $err, $errstr, 30);

if (!$fp) { // 连接失败
echo 'error';
}

ignore_user_abort();//关闭浏览器后,继续执行php代码
set_time_limit(0);//程序执行时间无限制
$sleep_time = 5;//多长时间执行一次
$switch = include 'switch.php';
while ($switch) {
$switch = include 'switch.php';
//心跳检测

if (检测成功){
    fwrite($fp, 'xxxx');
    ....
}else{
    $fp = stream_socket_client("tcp://{$host}:{$port}", $err, $errstr, 30);
    if (!$fp) { // 连接失败
        echo 'error';
    }
}

1个回答

CSDNXIAOD
CSDNXIAOD   2016.05.09 11:54

TCP,socket 心跳检测
心跳检测
心跳检测
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
socket心跳检测和重连小demo
有时候我们的程序要求socket一直保持连接,并且希望在socket断开以后能够重新连接,这个时候就需要用到心跳机制,所谓心跳机制,最简单的做法就是客户端每隔一段时间向服务端发送数据包,为了节约资源我们很多时候发送空数据就好,如果数据不能发送成功说明socket已经断开,这个时候就需要根据具体需求释放资源和重新连接了。         下面给出一个简单的小demo           /*
js实现接收心跳包
前言JS操作,随着互联网发展,有一种操作叫做socket长链接,这个操作是我在用nodejs做服务端,判断每五秒接收一次多个客户端传来的心跳包,如果超过五秒没有接收到则判断他为断开连接上代码//首先定义一个变量数组用来存储接收到的客户端ID(心跳包数据) var IDSNew = new Array(); //因为有多个设备,所以五秒之内可能会执行多次服务,所以要让他每个客户端连接的时候只执行一次v
JAVA长连接demo(含心跳检测)
[java] view plain copy package houlei.csdn.keepalive;      import java.io.Serializable;   import java.text.SimpleDateFormat;   import java.util.Date;      /**   * 维持连接的消息对象。   *
socket心跳检测
一、什么是心跳检测 判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。 基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。 代码就是每隔几分钟发送
Linux socket编程的心跳机制总结
Linux socket编程的心跳机制总结我写这篇文章的目的是想总结一下心跳机制的使用,因为最近两个项目的TCP通信中都使用了这个方法,感觉用法好诗比较经典的,所以拿出来与大家共享。什么是心跳机制心跳机制就是当客户端与服务端建立连接后,每隔几分钟发送一个固定消息给服务端,服务端收到后回复一个固定消息给客户端,如果服务端几分钟内没有收到客户端消息,则视客户端断开。发送方可以是客户端和服务端,看具体需求
TCP socket心跳包示例程序
在做游戏开发时,经常需要在应用层实现自己的心跳机制,即定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性。在TCP socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能更大。—— 这里实现的是由客户端给服务器发送心跳包,基本思路是:1) 服务器为每个客户端保存了IP和计数器count,即map<fd, pair<i
Android socket通信的长连接与心跳检测
在Android开发中,我们可能需要和服务器保持连接不断开,这时需要用到socket通信的长连接,并且定时发送消息检测是否是连接状态——心跳检测。 我们需要一个客户端和一个服务器端的demo,现在我就贴出重要代码,主要是android客户端的,服务器端的demo供大家下载。 首先我们需要新建一个BackService类来继承Service:package com.example.
socket 断线检测 心跳检测
心跳包:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。     在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可
linux 心跳包的实现
在做游戏开发时,经常需要在应用层实现自己的心跳机制,即定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性。 在TCP socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能更大。—— 这里实现的是由客户端给服务器发送心跳包,基本思路是: 1) 服务器为每个客户端保存了IP和计数器count,即map>。
【Android】Android心跳包详解
在做IM通信时,都会遇到这样一个概念:心跳包。又是一个比较抽象的概念,那么心跳包到底是什么呢? 之前做的机房预定系统里,使用的Socket和服务器通信。长连接测试服务器: Socket基本上都这么一个流程。public class Test { private static final int PORT = 1234; private static final int BUFFE