page contents

论一次在软件开发论坛的交流——swoole之简单入门和心跳检测

与一众技术好友在软件开发论坛交流之后,一时之间,我写下了这篇文章。Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。

attachments-2021-03-GkABpgeA60531a5d7658f.png

与一众技术好友在软件开发论坛交流之后,一时之间,我写下了这篇文章。

Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。

而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。

Swoole感觉大大提高了php的生命力,而且这是国人开发的(用C编写的一个高性能)网络框架。

Swoole相对于传统的php框架是有很大不同的。

环境依赖:

  • 仅支持 LinuxFreeBSDMacOS 三种操作系统

  • Windows平台,可使用CygWinWSL(Windows Subsystem for Linux)

  • Linux 内核版本 2.3.32 以上

  • gcc4.4 以上版本或者clang

  • 4.x版本起需要gcc-4.8或更高版本, 编译失败请先尝试升级gcc

PHP版本依赖

  1.x 依赖于php5.3.10以上版本

  4.x依赖于php7以上版本

下面举个简单例子

服务端:

$serv = new Swoole\Server('0.0.0.0',9800,SWOOLE_SOCK_TCP);$serv->on('Connect', function($server,$fd){    echo  '有新连接进来了'.$fd.PHP_EOL;//    $server->send($fd,'欢迎来到荣华富贵大家庭');});$serv->on('Receive', function (swoole_server $server,$fd,$reactor_id,$data){    echo '收到消息'.$data;    //$server->send($fd,$data);});$serv->on('Close', function (){    echo '连接关闭了';});$serv->start();
客户端:
$client = new swoole_client(SWOOLE_SOCK_TCP);if (!$client->connect('127.0.0.1', 9800, -1)){    exit("connect failed. Error: {$client->errCode}\n");}//$client->send("hello world\n");//echo $client->recv();$client->close();
上面是简单示例。接下来要知道为什么要心跳检测。

比如说:一个客户端一直占用着连接,没有活动也没有自己主动关闭,那这时候你就需要做一个心跳检测,去检测这个客户端到底有没有在做事情,

如果没有的话那服务端就要主动关闭这个客户端的连接,避免该客户端一直占用着资源,又不做事情,要把需要的资源给需要的客户端。这就是心跳

检测的运用场景。

只需要简单配置一下就好

案例:

服务端:

$serv = new Swoole\Server('0.0.0.0',9800,SWOOLE_SOCK_TCP);
$serv->set(array(  //心跳检测,每三秒检测一次,10秒没活动就断开 'heartbeat_idle_time'=>10,//连接最大的空闲时间 'heartbeat_check_interval'=>3 //服务器定时检查
));

$serv->on('Connect', function($server,$fd){ echo '有新连接进来了'.$fd.PHP_EOL;// $server->send($fd,'欢迎来到荣华富贵大家庭');});$serv->on('Receive', function (swoole_server $server,$fd,$reactor_id,$data){ echo '收到消息'.$data; $server->send($fd,$data);});$serv->on('Close', function (){ echo '连接关闭了';});$serv->start()
客户端和上面一样就可以了

运行图:

attachments-2021-03-esbJ2AMG60531a71d234c.png

10秒之后:

attachments-2021-03-MMFDXWjg60531a7b7195e.png


attachments-2021-03-aW8bQHwF60531a8122d25.jpg来源:https://www.cnblogs.com/jerrydailyphp/p/10712773.html

  • 发表于 2021-03-18 17:15
  • 阅读 ( 495 )
  • 分类:PHP开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章