如何理解swoole,swoole是如何在工作中应用的。

swoole官方的解释为php协程框架。下为swoole官网的官方说明。

Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

对于之前没有接触过swoole的,已及网络编程的人而言,一时之间是很难理解swoole到底是什么?

在接触swoole之初,我也是一脸的茫然。下面就以个人的理解来解释一下swoole到底是什么。

首先我们先来了解一下什么是进程,线程以及协程。

进程你可以把它理解为在运行中的应用。进程是程序的实体。

线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。进程是线程的容器。线程是进程中的一部分。

协程是一种程序组件。协程较为灵活,但在实践中使用没有子例程那样广泛。协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。 一个程序可以包含多个协程,可以对比与一个进程包含多个线程, 
我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。 
协程和线程区别:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。

弄清楚进程,线程,协程之后,那我们就来聊聊swoole。

swoole是php协程框架。你可以把它理解为php的一个扩展,用来网络编程,提升php的性能。

swoole提供了http、websocket、TCP、UDP、task、mysql、redis等同步、异步、定时器等服务。

swoole的生命周期   1.初始化      2.onstart开启     3.onReceive客户端请求的数据到达时会调用onReceive函数,进行业务逻辑处理输出结果    4.onWorkerStop  工作子进程退出时回调onWorkerStop函数。 5.onShutDown  Swoole服务停止时回调onShutDown函数(或者close)

以http服务为例:

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

$http->set([
    'worker_num'      => 5,                  //设置启动的 Worker 进程数。
    'enable_static_handler' => true,        //开启静态文件请求处理功能
    'document_root' => "/home/work/data",  //配置静态文件根目录
]);

//swoole事件      
//onrequest 在收到一个完整的 HTTP 请求后,会回调此函数
$http->on('request', function ($request, $response) {
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("

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

"); }); $http->start();

上文的代码所代表的意思为:开启swoole的http服务,开启了5个进程处理http发过来的请求。

swoole为常驻内存,当你的代码发生改变时都需要重启swoole服务。

以上就是对swoole一个简单的介绍,后续再详细介绍。

 

你可能感兴趣的:(swoole)