php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端
- 绑定tcp服务器的地址
$swserver = new swoole_server("127.0.0.1",9501);
- 设置tcp服务器装机容量(太危言耸听了~其实就是设置属性)
$swserver->set([
'worker_num'=>8,
'max_request'=>10000
]);
- 读取连接请求信息---接通
$swserver->on('connect',function($swserver,$fd,$reactor_id){
echo "server线程:{$reactor_id}受到来自客户端线程{$fd}的请求";
});
- 向客户端发送数据(我们姑且这样做,客户端发来什么,我们原样返回什么)
$swserver->on('receive',function($swserver,$fd,$reactor_id,$data){
$swserver->send($fd,"服务器线程{$reactor_id}收到了来自客户端线程{$fd}的数据,并原样返回,其内容为:{$data}");
});
- 结束与客户端的对话
$swserver->on('close',function($swserver,$fd){
echo "服务端{$swserver}与客户端{$fd}的对话结束!";
});
- 开启服务端
$swserver->start();
如果上机实验时提示:failed, Error: Address already in use[]
则利用 lsof -i:端口号 查看端口上运行的进程(或者使用 netstat -anp |grep 端口号查看进程)
然后运行sudo kill - 进程号,杀掉占用端口的进程
另外开启一个终端窗口,运行命令telnet 127.0.0.1 9501连接服务端
服务端显示:
[root@localhost myswoole]# php swserver2.php
server线程:2受到来自客户端线程1的请求
客户端发送信息:喜欢陈培昌,回显信息如下:
服务器线程2收到了来自客户端线程1的数据,并原样返回,其内容为:喜欢陈培昌
- 查看服务端进程开启的线程数
ps aft | grep swserver2.php(注意:这里swserver2.php是我取的名字,实际运行时,以你编写的程序文件名为准)

显然,这里对应了服务器端 worker_num的数量
$swserver->set([
'worker_num'=>,
'max_request'=>
]);
php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端的更多相关文章
- php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--客户端
//实例化一个swoole客户端 $swclient = new swoole_client(SWOOLE_SOCK_TCP); //建立连接---如果连接无效则退出 )){ echo "连 ...
- 异步非阻塞IO的Python Web框架--Tornado
Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBo ...
- Flask实现异步非阻塞请求功能
pip install gevent 关于gevent Gevent 是一个 Python 并发网络库,它使用了基于 libevent 事件循环的 greenlet 来提供一个高级同步 API.下面是 ...
- python学习笔记之四-多进程&多线程&异步非阻塞
ProcessPoolExecutor对multiprocessing进行了高级抽象,暴露出简单的统一接口. 异步非阻塞 爬虫 对于异步IO请求的本质则是[非阻塞Socket]+[IO多路复用]: & ...
- python---tornado补充(异步非阻塞)
一:正常访问(同一线程中多个请求是同步阻塞状态) import tornado.ioloop import tornado.web import tornado.websocket import da ...
- 在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
nginx平台初探(100%) — Nginx开发从入门到精通 http://ten 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来 ...
- Tornado之自定义异步非阻塞的服务器和客户端
一.自定义的异步非阻塞的客户端 #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # da ...
- Python web框架 Tornado(二)异步非阻塞
异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案:多线程,多进程 异步非阻塞(存在IO请求): Torna ...
- Python的异步编程[0] -> 协程[1] -> 使用协程建立自己的异步非阻塞模型
使用协程建立自己的异步非阻塞模型 接下来例子中,将使用纯粹的Python编码搭建一个异步模型,相当于自己构建的一个asyncio模块,这也许能对asyncio模块底层实现的理解有更大的帮助.主要参考为 ...
随机推荐
- JVM配置参数解析
1.参数说明(部分,待完善) -Xms128M:JVM初始分配的堆内存 -Xmx256M:JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M: JVM初始分配的非堆内存 -XX:M ...
- Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths)
Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向 ...
- C++学习笔记-C++对C语言的函数拓展
内联函数 内联函数是指用inline关键字修饰的函数.在类内定义的函数被默认成内联函数.内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质 inline关键字只是给编译器一个建议,编译 ...
- XXE漏洞简析
0x00.什么是XXE? XML外部实体注入(XML External Entity Injection) XML基础 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型. ...
- 2019牛客暑期多校训练营(第一场)-E(DP)
题目链接:https://ac.nowcoder.com/acm/contest/881/E 题意:求可分解成n个AB和m个BA的字符串的个数. 思路: 首先根据贪心思想,前n个A可作为AB的A,后m ...
- java 利用辗除法求两个整数的最大公约数和最小公倍数
题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 程序分析:利用辗除法. package Studytest; import java.util.Scanner; public class P ...
- NLP自然语言处理中英文分词工具集锦与基本使用介绍
一.中文分词工具 (1)Jieba (2)snowNLP分词工具 (3)thulac分词工具 (4)pynlpir 分词工具 (5)StanfordCoreNLP分词工具 1.from stanfor ...
- Vue首页加载过慢 解决方案
一.什么导致了首页初步加载过慢:app.js文件体积过大 二.解决方法: 1.Vue-router懒加载 vue-router懒加载可以解决首次加载资源过多导致的速度缓慢问题:vue-router支持 ...
- vue项目中微信jssdk在ios签名失败
一.问题描述 1. vue项目中微信jssdk签名时,在安卓和ios是有差异的,签名时使用的url=window.location.href.split('#')[0],此时在安卓没问题,在ios会导 ...
- leecode100热题 HOT 100(2)
# 题名 题解 通过率 难度 出现频率 142 环形链表 II 43.3% 中等 146 LRU缓存机制 43.3% 中等 148 排序链表 ...