Libevent实现TCP服务循环监听

news/2024/7/17 22:35:51

目标

建立一个简单的tcp服务,可持续的监听客户端的连接和请求

细节

  1. libevent

  2. stream socket

  3. EV_READ | EV_PERSIST

代码

要义libevent对stream_socket_serverstream_socket_accept产生的资源进行监听

<?php
/**
* tcp 服务 socket连接
*/
$base = event_base_new();
$event = event_new();
// 创建一个socket服务
$serv = stream_socket_server('0.0.0.0:8080');
// 设置对这个socket的事件监听,监听可持续读
event_set($event, $serv, EV_READ|EV_PERSIST, 'server_connect',[$event,$base]);
event_base_set($event, $base);
event_add($event);
// 事件循环监听
event_base_loop($base);function server_connect($fd,$flags,$args) {$event = $args[0];$base = $args[1];echo "client connect...\n";// 接收socket连接$socket = stream_socket_accept($fd);$new_base = event_base_new();$new_event = event_new();// 对该连接进行监听,注意此处,如果建立了连接不对其进行accpet,那么将持续循环event_set($new_event,$socket,EV_READ|EV_PERSIST,'get',[$new_event,$new_base]);event_base_set($new_event,$new_base);event_add($new_event);event_base_loop($new_base);
}function get($fd,$flags,$args) {// 如果连接可读,读取内容$buffer = fread($fd, 10000);echo "client send:$buffer\n";// 发送给客户端内容fwrite($fd,'Server:i have got your words -'.$buffer."\n");}

http://lihuaxi.xjx100.cn/news/283425.html

相关文章

mysql 查询优化 非索引_mysql 查询优化和索引使用心得

-- sql优化案例-- 1.not in 用left join on 替换-- 2.like %XXX% 用 like XXX% 替换-- 3.limit 优化 实用&#xff0c;在分页中EXPLAIN SELECT * FROM CSP_POI_SEND c ORDER BY c.SEND_ID LIMIT 999999,10; -- 3278348EXPLAIN SELECT * FROM CSP_POI_SEND c WHERE c.SEND_ID &…

Rate 函数在PromQL 查询中的使用

Rate用于计算变化率的最常见函数是 rate()&#xff0c;rate() 函数用于计算在指定时间范围内计数器每秒增加量的平均值。通常来说直接绘制一个原始的 Counter 类型的指标数据用处不大&#xff0c;因为它们会一直增加&#xff0c;一般来说是不会去直接关心这个数值的&#xff0c…

【初学者指南】在ASP.NET MVC 5中创建GridView

介绍 在这篇文章中&#xff0c;我们将会学习如何在 ASP.NET MVC 中创建一个 gridview&#xff0c;就像 ASP.NET Web 表单中的 gridview 一样。服务器端和客户端有许多可用的第三方库&#xff0c;这些库能够提供所有必需的功能&#xff0c;如 Web 表格中的搜索、排序和分页等。是…

(转载)新年——顺民的牢骚

我是一个顺民&#xff0c;顺的不能再顺的民&#xff01;相信很多人和我一样&#xff0c;即使心中有很多的不满&#xff0c;也只是偶尔发发牢骚&#xff0c;而且&#xff0c;大多时&#xff0c;还不敢在人多的时候发&#xff01;即使在昏暗的灯光下的某个角落写写BLOG&#xff0…

一群猥琐至极的大学舍友,我有点想你们了...附骚图

点击蓝字“视学算法”关注我哟加个“星标★”&#xff0c;每日好文必达&#xff01;阿广 家里蹲大学幼儿组编程赛参与奖获得者自从本科毕业以来&#xff0c;我时不时的梦到我依然还在读大学&#xff0c;梦中情节有真有假&#xff0c;但是不得不承认的是&#xff0c;我真的想念…

一次改变未来10年人生的机会

还记得陆奇在十问里说过马拉松和短跑的概念吗&#xff1f;你需要设计属于你自己的工作和生活节奏&#xff0c;一方面你可以保持高速&#xff0c;这个高速可以给你带来最大的效率。另一方面也需要可以应对突发变化&#xff0c;可以时不时的“冲刺”一下 &#xff08;比如偶尔过度…

mysql数据库链接百分号_数据库百分号怎么用

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

“搞垮” 微博服务器?每天上亿条用户推送是如何做到的

记者 | 琥珀出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;想必国内绝大多数网民都有新浪微博的用户账号。据最新数据显示&#xff0c;2018 年第四季度财报&#xff0c;微博月活跃用户突破 4.62 亿&#xff0c;连续三年增长 7000 万 &#xff1b;微博垂直…