• 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[98]
    则利用 lsof -i:端口号  查看端口上运行的进程(或者使用 netstat -anp |grep 端口号查看进程)
    然后运行sudo kill -9 进程号,杀掉占用端口的进程
    另外开启一个终端窗口,运行命令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'=>8,   'max_request'=>10000 ]);
  • 相关阅读:
    微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
    腾讯云 docker 镜像 dotnet/core sdk aspnet
    ImageMagick PDF到JPG有时会导致黑色背景
    VS2019 发布单文件
    MySQL 更新语句执行过程 WAL redolog binlog
    MySQL 查询语句执行过程
    让MySQL为我们记录执行流程
    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束
    初用MySQL Mysql示例库 Navicat15
    OldTrafford after 102 days
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10823053.html
Copyright © 2020-2023  润新知