学习
实践
活动
专区
工具
TVP
写文章
专栏首页cwl_JavaPHP-swoole快速起步

PHP-swoole快速起步

三、快速起步

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入口文件

客户端调用

效果

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42528266复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Elasticsearch 快速起步

    1. 简介 Elasticsearch 是一个高可靠开源全文搜索与分析引擎,可以让我们实时存储、查询、分析海量数据 具有安装方便、稳定可靠、快速、实时等特点,是...

    dys
  • Kafka 快速起步

    主要内容: 1. kafka 安装、启动 2. 消息的 生产、消费 3. 配置启动集群 4. 集群下的容错测试 5. 从文件中导入数据,并导出到文件 单机示例 ...

    dys
  • Angular 2 快速起步 原

    准备学习angularjs2,安装的过程费了不少时间,刚开始为了方便,从官网上下载了现成的包,但是就运行不起来,后来还是老老实实按教程一步步建文件,ng2详细地...

    tianyawhl
  • 【教程】Apache Storm 快速起步

    简介 本教程介绍了 Apache Storm 的基本原理和开发方法,包括一个PDF和2个示例的源码 内容大纲 Storm 是什么 应用场景 Storm与Hado...

    dys
  • npm 及vue,router,webpack安装 快速起步

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • MyBatis学习总结(一)——ORM概要与MyBatis快速起步

    程序员应该将核心关注点放在业务上,而不应该将时间过多的浪费在CRUD中,多数的ORM框架都把增加、修改与删除做得非常不错了,然后数据库中查询无疑是使用频次最高、...

    张果
  • PHP-swoole下载安装

    swoole是一个PHP的扩展,所以安装的方式和安装其它的PHP扩展的方式一样。swoole不支持windows安装,没有windows扩展。 linux系统或...

    cwl_java
  • PHP-swoole搭建websocket服务

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

    cwl_java
  • Redis 起步

    Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章: 1.Redis简介 ? Redis是一个key-value...

    张善友
  • Redis 起步

    http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html

    bear_fish
  • Python 起步

    特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章...

    收心
  • python起步

    python是动态语言,不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化

    py3study
  • dubbo起步

    jeremyxu
  • flutter 起步

    Flutter是谷歌的移动UI框架,可以运行在ios与android系统上,可以以完成app的开发,

    ronixiao
  • Vuejs --01 起步

    一、是什么      1、是一套构建用户界面的渐进式框架,Vue采用自底向上增量开发的设计           1.1     解释:框架譬如angular,是...

    用户1148399
  • SpringBoot起步依赖

    搜索了很多网页也没有弄懂起步依赖是什么,看了之后总感觉懵懵懂懂的,感觉都是天下文章一大抄!下面自己总结下如果有误的地方请大神指正。

    赵哥窟

扫码关注腾讯云开发者

领取腾讯云代金券