swoole2-用swoole搭建http服务器

一.线程和进程的模型

swoole的线程/进程

启动swoole的时候会启动Manager进程和Master进程。对于Manager进程,用于管理Worker进程(我们业务层的逻辑代码一般
放在这里)和Task进程(用于在某个特定的时间或者条件下执行的代码)。对于Master进程,用于底层的开发,后面详细介绍.

二.swoole执行过程

执行过程图解

(1)swoole支持的常用的事件列表

事件名称 作用
onStart 在启动这个swoole服务器后触发这个事件
onShutdown 在swoole服务器关闭时触发这个事件
onWorkerStart worker/task进程启动时触发这个事件
onWorkerStop worker/task进程退出时触发这个事件
onTask 有新的任务等待执行
onFinish 这个任务执行完成时触发这个事件
onRecive 收到了客户端的消息时触发这个事件(重点)
onConnect 客户端和服务端建立连接时触发这个事件
onClose 客户端和服务端断开连接时触发这个事件
onRequest 客户端发起http请求时触发这个事件

(2)swoole执行流程中的几个需要注意的点

1. 在这个swoole服务器启动后,会创建三个进程
	* Manager
	* Worker
	* Task
2.这个Manager进程是Worker进程的守护进程,在这个Worker进程意外结束后,这个Manager进程会重新启动Workder进
	程,Manager进程只有一个,而这个Worker可以有多个。
3.Worker进程通过给这个Task进程发送任务,可以把一些计算量大的任务转移到Task进程,这样我们的Worker进程就可以
	高速处理客户端的请求,提高并发量。
4.reactor线程是swoole底层处理高并发,最大限度的调用底层资源。

三.搭建http服务器

(1)代码说明


<?php
    //(1)创建swool的http服务器对象
    $serv = new swoole_http_server('0.0.0.0',8000);
    //(2)当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
    $serv->on('request',function($request,$response){
        //(2.1)$request包含这个请求的所有信息,比如参数
        //(2.2)$response包含返回给浏览器的所有信息,比如helloworld
        var_dump($request);
        var_dump($response);
        //(2.3)向浏览器发送helloworld
        $response->end("hello world");
    });
    //(3)启动http服务器
    $serv->start();

(2)linux操作小提示

#1.查看进程
ps -aux | grep http-server.php
#2.批量杀死进程
kill -s 9 `ps -aux | grep http-server | awk '{print $2}'`

(3)swoole程序编写流程

1. 创建swoole服务器对象
2. 为这个对象设置回调函数
3. 启动swoole服务器

猜你喜欢

转载自blog.csdn.net/jeremy_ke/article/details/84259517