资讯专栏INFORMATION COLUMN

初识 swoole【上】

scola666 / 2871人阅读

摘要:前言都是为了生存有收获的话请加颗小星星,没有收获的话可以反对没有帮助举报三连代码仓库初始上一什么是面向生产环境的异步网络通信引擎使开发人员可以编写高性能的异步并发,服务。

前言:都是为了生存

有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 举报三连

代码仓库

初始swoole【上】

一、什么是swoole

Swoole:面向生产环境的 PHP 异步网络通信引擎

使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

二、安装 1、pecl
pecl install swoole
2、源码安装
curl -O https://pecl.php.net/get/swoole-4.2.5.tgz
tar -zxvf swoole-4.2.5.tgz
cd swoole-4.2.5.tgz
phpize
./configure
make && make install
# 加入到php.ini中
php --ini
extension=swoole.so
三、基本入门

注意:示例代码都引入了"symfony/var-dumper"包进行美化打印

Swoole的绝大部分功能只能用于cli命令行环境

1、TCP服务器
on("connect", function (swoole_server $server, $fd) {
    dump("{$fd}连接");
    $server->send($fd, "欢迎{$fd}大山驴
");
});
// receive 回调
$server->on("receive", function (swoole_server $server, $fd, $from_id, $data) {
    $server->send($fd, "服务端回复:{$data}
");
    foreach ($server->connections as $connection) {
        if ($connection != $fd){
            $server->send($connection, "{$fd}说{$data}");
        }
    }

});
// close
$server->on("close", function (swoole_server $server, $fd) {
    dump("{$fd}关闭");
    foreach ($server->connections as $connection) {
        if ($connection != $fd){
            $server->send($connection, "{$fd}断开连接");
        }
    }
});
// start
$server->start();
php tcp_server.php

telnet 127.0.0.1 9501
2、UDP服务器
// new
on("Packet", function (swoole_server $server, $data, $clientInfo) {
    $server->sendto($clientInfo["address"], $clientInfo["port"], "服务器回复: {$data}");
    dump($clientInfo);
});
// start
$server->start();
php udp_server.php

netcat -u 127.0.0.1 9502
3、Web服务器
on("request", function (SwooleHttpRequest $request, SwooleHttpResponse $response) {
    dump($request->get, $request->post);
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("

Hello Swoole. #" . mt_rand(1000, 9999) . "

"); }); // start $http->start();
php web_server.php

curl -XGET "127.0.0.1:9503?id=1&name=aa&age=26"
curl -XPOST "127.0.0.1:9503?id=1&name=aa&age=26" -d "love=like"
4、WebSocket服务器

服务端

on("open", function (SwooleWebSocketServer $ws, SwooleHttpRequest $request) {
    dump($request->fd, $request->get, $request->server);
    $ws->push($request->fd, "你是大山驴
");
});
// message
$ws->on("message", function (SwooleWebSocketServer $ws, $frame) {
    dump("消息: {$frame->data}
");
    $ws->push($frame->fd, "服务端回复: {$frame->data}
");
});
// close
$ws->on("close", function (SwooleWebSocketServer $ws, $fd) {
    dump("{$fd}关闭");
});
// start
$ws->start();

客户端

let ws = new WebSocket("ws://127.0.0.1:9504");
ws.onopen = function (ws) {
    console.log("连接服务器");
};

ws.onclose = function (ws) {
    console.log("断开连接");
};

ws.onmessage = function (ws) {
    console.log("接收来自服务器的消息:" + ws.data);
};

ws.onerror = function (ws, event) {
    console.log("错误了:" + ws.data);
};
5、定时器
           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29838.html

相关文章

  • Swoole学习手记(一)初识Swoole

    摘要:目录初识创建服务器上创建服务器下异步任务持续更新中。。。参加工作有一段时间了,偶尔会听到,对我这种小白粗略看下文档都会觉得很牛逼。个人理解就是解决这样应用场景的。 目录 初识Swoole 创建服务器(上) 创建服务器(下) 异步任务task 持续更新中。。。 参加工作有一段时间了,偶尔会听到swoole,对我这种PHP小白粗略看下文档都会觉得很牛逼。由于学习成本比较高,自身对网络异...

    yeyan1996 评论0 收藏0
  • 初识 swoole【下】

    摘要:前言接初识上,这篇主要是异步问题有收获的话请加颗小星星,没有收获的话可以反对没有帮助举报三连代码仓库初识下异步任务设置异步任务的工作进程数量连接连接欢迎大山驴回调投递异步任务触发异步任务服务端回复说处理异步任务新的异步任务 前言:接初识swoole【上】,这篇主要是异步问题 有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 举报三连 代码仓库 初识swoole【下】 6、异...

    yeooo 评论0 收藏0
  • swoole入门4-初识swoole

    摘要:当某种网络事件发生时,会回调用户设置的指定回调函数。承担了底层网络事件的监听及各种底层事件处理,当收到请求时,会触发事件提醒,然后将控制权转交预先注册的事件回调函数,来进行后续的处理。请求到来时创建,请求结束后销毁。 运行流程图 showImg(https://segmentfault.com/img/remote/1460000017207791);showImg(https://s...

    forsigner 评论0 收藏0
  • 实战 swoole【聊天室】

    摘要:是一个请求对象,包含了客户端发来的握手请求信息事件函数中可以调用向客户端发送数据或者调用关闭连接事件回调是可选的当服务器收到来自客户端的数据帧时会回调此函数。 前言:了解概念之后就应该练练手啦,不然就是巨婴 有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 举报三连 代码仓库 实战swoole【聊天室】 在线体验 准备工作 需要先看初识swoole【上】,了解基本的服务端...

    andycall 评论0 收藏0
  • 【宇润日常疯测-007】Swoole 协程与传统 fpm 同步模式比较

    摘要:初识协程执行结果协程与同步模式比较我们一直在说协程适合用于密集场景,在同样的硬件配置环境下,它会比传统的同步模式承载更多的访问量。假设一次查询为,在传统同步模式下,当前进程在这的时间里,是不能做其它操作的。同步模式,耗费左右的是。 如果说数组是 PHP 的精髓,数组玩得不6的,根本不能算是会用PHP。那协程对于 Swoole 也是同理,不理解协程去用 Swoole,那就是在瞎用。 首先...

    henry14 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<