Swoole协程系统HTTP服务

这篇具有很好参考价值的文章主要介绍了Swoole协程系统HTTP服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先启动宝塔 

/etc/init.d/bt start

源码参考

https://github.com/zhangyue0503/swoole/tree/main/4.Swoole%E5%8D%8F%E7%A8%8B

对于异步来说,我们需要监听事件,并且监听的进程是并发的,所以会有一个问题,那就是无法保证前后顺序。

$serv = new Swoole\Server("0.0.0.0", 9501);

//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {
    Swoole\Coroutine\System::sleep(5);//此处sleep模拟connect比较慢的情况,这种sleep()是不阻塞的
    echo "onConnect", PHP_EOL;
});

//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $reactor_id, $data) {
    echo "onReceive", PHP_EOL;
});

//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start();

在这个例子中,我们通过在 Connect 事件中暂停5秒,来模拟 connect 可能出现连接比较慢的问题,然后再用 telnet 测试,就会发现 Receive 事件被先输出了出来。

[root@localhost source]# php 3.3Swoole协程系统.php
onReceive
onConnect

使用协程来提供 Http 服务

Swoole\Coroutine\run (function () {
    $server = new Swoole\Coroutine\Http\Server('0.0.0.0', 9501, false);
    $server->handle('/', function ($request, $response) {
        $response->end("<h1>Index</h1>");
    });
    $server->handle('/test', function ($request, $response) {
        $response->end("<h1>Test</h1>");
    });
    $server->handle('/stop', function ($request, $response) use ($server) {
        $response->end("<h1>Stop</h1>");
        $server->shutdown();
    });
    $server->start();
});

我们需要先建立一个协程容器,也就是这个 Swoole\Coroutine\run() 方法,这是一种开启协程容器的方式,其它的方式我们后面聊到了再说。这个协程容器是什么意思呢?它就像是一个 C 或者 Java 中的 main() 函数,提供程序的入口。

在协程服务中,我们真的不需要去监听事件了,只需要在这个协程容器的回调函数中实例化一个 Swoole\Coroutine\Http\Server 对象,然后通过它的 handle() 方法获得请求路径的内容,并交给回调函数进行处理即可。这里的回调函数中的参数与异步的 onRequest 监听中的回调参数是一样的,一个请求参数,一个响应参数。文章来源地址https://www.toymoban.com/news/detail-607162.html

到了这里,关于Swoole协程系统HTTP服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

    安装环境 PHP 拓展 直接使用 宝塔一键安装 (Windows系统不支持) 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK  GitHub - kaiheila/php-bot: 开黑啦机器人的php版本 https://github.com/kaiheila/php-bot  配置参数 机器人链接模式选择 webhook 密钥 自己设

    2024年02月11日
    浏览(39)
  • Android设备搭建http服务---------AndServer

    项目中引用AndServer 在项目的根build.gradle文件(不是app那个moudle的build.gradle)最顶部添加: 在当前的moudle(一般就是app)的build.gradle里面的plugins里面添加: plugins build.gradle里面dependencies的添加 代码 以上代码启动在Android手机(设备)上的http服务器,服务器绑定端口9999 spring样式

    2024年02月05日
    浏览(26)
  • Android协程

    在介绍协程之前我们先了解几个概念 在操作系统中我们曾经学到过 并发 与 并行 并发是 同一个时刻 只有 一条指令在执行 ,其他指令没有再执行,但是由于CPU的时间片特别短,导致 多个指令来回切换的时间间隔特别短 ,就好像是同一时间 多条指令在执行 。 单核CPU与多核CPU 都可

    2024年02月12日
    浏览(27)
  • Android Kotlin 协程初探

    维基百科:协程,英文Coroutine [kəru’tin] (可入厅),是计算机程序的一类组件,推广了协作式多任务的子程序,允许执行被挂起与被恢复。 作为Google钦定的Android开发首选语言Kotlin,协程并不是 Kotlin 提出来的新概念,目前有协程概念的编程语言有Lua语言、Python语言、Go语言

    2024年02月08日
    浏览(29)
  • 【NanoHTTPD】Android,使用NanoHTTPD搭建服务器,接受Http请求,最佳实践

    安卓app,作为服务器,接受Http,get post 请求推送数据,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。 开源地址:GitHub - NanoHttpd/nanohttpd: Tiny, easily embeddable HTTP serv

    2024年02月10日
    浏览(35)
  • Android上的基于协程的存储框架

    在Android上,经常会需要持久化本地数据,比如我们需要缓存用户的配置信息、用户的数据、缓存数据、离线缓存数据等等。我们通常使用的工具为SharePreference、MMKV、DataStore、Room、文件等等。通过使用现有的存储框架,结合协程,我们可以方便地实现一个轻量级的响应式存储

    2024年02月13日
    浏览(22)
  • Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

    #!/bin/sh HTTP_FLV_MODULE_PATH=…/nginx-http-flv-module-1.2.7 OpenSSL_PATH=…/openssl-1.1.1d #–prefix=./bin 代表编译完成之后输出的路径地址 #–add-module 将拓展模块添加到当前一起编译 ./configure --prefix=./bin –add-module= H T T P F L V M O D U L E P A T H   − − w i t h − o p e n s s l = HTTP_FLV_MODULE_PATH --with

    2024年04月15日
    浏览(41)
  • Android kotlin实战之协程suspend详解与使用

            Kotlin 是一门仅在标准库中提供最基本底层 API 以便各种其他库能够利用协程的语言。与许多其他具有类似功能的语言不同, async  与  await  在 Kotlin 中并不是,甚至都不是标准库的一部分。此外,Kotlin 的  挂起函数  概念为异步操作提供了比 future 与 pro

    2024年02月03日
    浏览(31)
  • Android使用kotlin+协程+room数据库的简单应用

    前言:一般主线程(UI线程)中是不能执行创建数据这些操作的,因为等待时间长。所以协程就是为了解决这个问题出现。 第一步:在模块级的build.gradle中引入   好了前期工作ok,正式编写room吧! 第二步:创建表实体  第三部:编写对应的Dao接口  第四步:创建数据库信息

    2024年02月13日
    浏览(35)
  • 如何使用CentOS系统中的Apache服务器提供静态HTTP服务

    在CentOS系统中,Apache服务器是一个常用的Web服务器软件,它可以高效地提供静态HTTP服务。以下是在CentOS中使用Apache提供静态HTTP服务的步骤: 1. 安装Apache服务器 首先,您需要确保已安装Apache服务器。可以使用以下命令安装Apache: bash 复制代码 sudo yum install httpd 2. 配置Apache服务

    2024年02月02日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包