• 绑定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服务器--服务端的更多相关文章

  1. php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--客户端

    //实例化一个swoole客户端 $swclient = new swoole_client(SWOOLE_SOCK_TCP); //建立连接---如果连接无效则退出 )){ echo "连 ...

  2. 异步非阻塞IO的Python Web框架--Tornado

    Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBo ...

  3. Flask实现异步非阻塞请求功能

    pip install gevent 关于gevent Gevent 是一个 Python 并发网络库,它使用了基于 libevent 事件循环的 greenlet 来提供一个高级同步 API.下面是 ...

  4. python学习笔记之四-多进程&多线程&异步非阻塞

    ProcessPoolExecutor对multiprocessing进行了高级抽象,暴露出简单的统一接口. 异步非阻塞 爬虫 对于异步IO请求的本质则是[非阻塞Socket]+[IO多路复用]: & ...

  5. python---tornado补充(异步非阻塞)

    一:正常访问(同一线程中多个请求是同步阻塞状态) import tornado.ioloop import tornado.web import tornado.websocket import da ...

  6. 在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树

    nginx平台初探(100%) — Nginx开发从入门到精通 http://ten 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来 ...

  7. Tornado之自定义异步非阻塞的服务器和客户端

    一.自定义的异步非阻塞的客户端 #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # da ...

  8. Python web框架 Tornado(二)异步非阻塞

    异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案:多线程,多进程 异步非阻塞(存在IO请求): Torna ...

  9. Python的异步编程[0] -> 协程[1] -> 使用协程建立自己的异步非阻塞模型

    使用协程建立自己的异步非阻塞模型 接下来例子中,将使用纯粹的Python编码搭建一个异步模型,相当于自己构建的一个asyncio模块,这也许能对asyncio模块底层实现的理解有更大的帮助.主要参考为 ...

随机推荐

  1. python中True,False与0,1之间的关系

    demo1 >>> print(True == 1) >>> print(True == 2) >>> print(False == 0) > ...

  2. 一加手机2 进入recovery 模式无法挂载USB存储器通过命令窗口上传ROM镜像

    试过3.0.3-0和3.0.3-1的recovery都无法使用“挂载USB大容量存储器”模式,这肯定让很多清掉系统(就是system分区)的小伙伴无力吐槽,因为这样子rom就无法在rec里面从电脑拷到 ...

  3. 【Python开发】python重命名文件和遍历文件夹操作

    当前文件夹下,把所有文件名中的"50076"替换成"50092",用Python实现,代码所下: # encoding: utf-8 import os imp ...

  4. 【Linux开发】linux设备驱动归纳总结(三):7.异步通知fasync

    linux设备驱动归纳总结(三):7.异步通知fasync xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  5. 基于vs插件的abp代码生成器

    工作了这么多年,一直都在小公司摸爬滚打,对于小公司而言,开发人员少,代码风格五花八门.要想用更少的人,更快的速度,开发更规范的代码,那自然离不开代码生成器.之前用过动软的,也用过T4,后面又接触了力软 ...

  6. [转帖]Linux /tmp目录下执行脚本失败提示Permission denied

    Linux /tmp目录下执行脚本失败提示Permission denied https://www.cnblogs.com/linyfeng/p/11087655.html 国产化的环境上 就有一个 ...

  7. [转帖]忘记了MariaDB root密码的解决办法

    忘记了MariaDB root密码的解决办法 https://www.cnblogs.com/liaojie970/p/6126322.html 貌似跟 mysql 是一样的. 1.停掉mariaDB ...

  8. 前端开发工具包 WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    ​ 前端开发工具包WijmoJS在2019年的第一个主要版本2019V1已经发布,本次发布包括了更加易用的在线Demo系统.各控件新增功能.NPM 包的改动,以及全新的浏览器API组件. WijmoJ ...

  9. PHP与MySQL的连接

    一.PHP的相关扩展 PHP与MySQL的交互需要要借助PHP提供的数据库扩展,在PHP中提供了多种数据库扩展,常用的MySQL扩展, MySQLi扩展和PDO扩展. 1.三者各自的特点: MySQL ...

  10. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...