首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP-swoole快速起步

PHP-swoole快速起步

作者头像
cwl_java
发布2022-11-30 10:41:16
4830
发布2022-11-30 10:41:16
举报
文章被收录于专栏:cwl_Javacwl_Java

三、快速起步

3.1、进程管理

在这里插入图片描述
在这里插入图片描述

swoole是一个多进程,多线程的服务 master主进程负责创建多个线程来接受和返回用户请求,同时生成一个manager进程,manager进程负责生成和管理N多个worker和task进程,worker和task进程是负责干活的

3.2、环境准备

使用ftp或sftp上传源代码,使用phpstorm提供ftp来直接保存即上传代码。 配置phpstorm支持ftp上传

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

.

在这里插入图片描述
在这里插入图片描述

设置保存就上传

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

让phpstorm更好的支持swoole开发 下载:https://github.com/wudi/swoole-ide-helper 放到项目根目录下面就可以了

在这里插入图片描述
在这里插入图片描述

3.3、创建TCP服务器

  • 构建Server对象
$serv = new Swoole\Server('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
// 参数说明
$host参数用来指定监听的ip地址  0.0.0.0监听全部地址
$port监听的端口,如9501  0-1024之间,是系统默认保留的,所在建议从5000
$mode运行的模式 SWOOLE_PROCESS多进程模式(默认)  SWOOLE_BASE基本模式
$sock_type指定Socket的类型  支持TCP、UDP等
  • 设置运行时参数
$serv->set(array(
    'worker_num' => 2
));
// 参数说明
worker_num  设置启动的Worker进程数   CPU核数的1-4倍最合理
  • 注册事件回调函数
// 有新的连接进入时,在worker进程中回调
$serv->on('Connect', function(swoole_server $server, int $fd, int $reactorId){});
// 接收到数据时回调此函数,发生在worker进程中  它不能少
$serv->on('Receive', function(swoole_server $server, int $fd, int $reactor_id, string $data){});
// TCP客户端连接关闭后,在worker进程中回调此函数
$serv->on('Close', function(swoole_server $server, int $fd, int $reactorId){});
// 参数说明
$server 是swoole_server对象  $serv->connections; //当前服务器的客户端连接,可使用foreach遍历所有连接
$fd 是连接的文件描述符
$reactorId 来自那个reactor线程
$data,收到的数据内容
  • 启动服务
$serv->start();
在这里插入图片描述
在这里插入图片描述

测试使用telnet来进行测试

# 默认系统是没有安装telnet
yum install -y telnet

windows下,默认也是没有安装的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用

在这里插入图片描述
在这里插入图片描述

回车进入,按下ctrl+]再次回车,就可以发内容,退出,按ctrl+] 输入 quit 退出

3.4、tcp客户端

// 同步客户端连接
$client = new \Swoole\Client(SWOOLE_SOCK_TCP);
// 连接到服务器  ip  端口  超时时间
if (!$client->connect('127.0.0.1', 9501, 0.5))
{
    die("connect failed.");
}
// 向服务器发送数据
if (!$client->send("hello world"))
{
    die("send failed.");
}
//从服务器接收数据
$data = $client->recv();
if (!$data)
{
    die("recv failed.");
}
echo $data;
//关闭连接
$client->close();
在这里插入图片描述
在这里插入图片描述

原生PHP实现了tcp客户端

在这里插入图片描述
在这里插入图片描述

3.5、rpc

rpc服务端

在这里插入图片描述
在这里插入图片描述

客户端调用

在这里插入图片描述
在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述

集合到tp框架中 定义服务,引入tp入口文件

在这里插入图片描述
在这里插入图片描述

客户端调用

在这里插入图片描述
在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三、快速起步
    • 3.1、进程管理
      • 3.2、环境准备
        • 3.3、创建TCP服务器
          • 3.4、tcp客户端
            • 3.5、rpc
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档