抽离耗时任务 独立任务等待 (发送短信、邮件等)
优化独立任务类

class Http{

    CONST HOST="0.0.0.0";
    CONST PORT=8811;
    //定义一个属性 保存服务链接句柄
    public $http = null;

    //构造函数 初始化websocket服务连接
    public function __construct(){
        $this->http = new swoole_http_server(self::HOST,self::PORT);//创建服务
		
        $this->http->set([
            'worker_num'=>4,//定义worker数
            'task_worker_num'=>4,//定义tasker数
            "enable_static_handler"=>true,//允许静态化目录
            "document_root" =>"/swoole/project/live/thinkphp5.1/public/static",//静态化目录地址
        ]);

        $this->http->on('workerstart',[$this,'onWorkerStart']);//服务准备前的一个初始化加载 tp的入口配置可以再次设置
        $this->http->on('request',[$this,'onRequest']);//用户请求的一个反馈
        $this->http->on("task",[$this,'onTask']);//监听任务分配 发短信、邮箱等消耗时间任务用方法来处理
        $this->http->on('finish',[$this,'onFinish']);//task事件后的的一个处理
        $this->http->on('close',[$this,'onClose']);//关闭事件

        $this->http->start();//服务的开启
    }

    /**
     * WorkerStart的回调
     * @param $server
     * @param $worker_id
     */
    public function onWorkerStart($server,$worker_id){

        define('APP_PATH', __DIR__ . '/../application/');
        // 加载基础文件
       // require __DIR__ .'/../thinkphp/base.php';
        require __DIR__ .'/../thinkphp/start.php';

    }

    /**
     * Request的回调
     * @param $request
     * @param $response
     */
    public function onRequest($request,$response){
    //请求服务转换
        $_SERVER = [];
        if(isset($request->server)){
            foreach($request->server as $k=>$v){
                $_SERVER[strtoupper($k)] = $v;
            }
        }
        //请求头文件转换

        if(isset($request->header)){
            foreach($request->header as $k=>$v){
                $_SERVER[strtoupper($k)] = $v;
            }
        }
        //请求GET
        $_GET = [];
        if(isset($request->get)){
            foreach($request->get as $k=>$v){
                $_GET[$k] = $v;
            }
        }

        //请求POST
        $_POST = [];
        if(isset($request->post )){
            foreach($request->post as $k=>$v){
                $_POST[$k] = $v;
            }
        }
        //这一个配置 是让用户请求是能调用的本类的实体对象 可以调用task
        $_POST['http_server'] = $this->http;
		//用户请求的一个时间打印测试
        echo date('Y-m-d H:i:s').'request'.PHP_EOL;

	//把thinkphp的run 放到缓冲区,输入到用户界面
        ob_start();
        try{
            think\Container::get('app', [APP_PATH])
                ->run()
                ->send();
        }catch(\Exception $e){

        }
        $res = ob_get_contents();
        ob_end_clean();
        $response->end($res);
    }

    public function onTask($serv,$taskId,$workerId,$data){
        //把task剥离出来
        $obj = new app\common\lib\task\Task;
        $method = $data['method'];
        $flag = $obj->$method($data['data']);
        return $flag;

    }

    public function onFinish($serv,$taskId,$data){
        echo "taskId:{$taskId}--finish-data-sucess:{$data}".PHP_EOL;
    }

    public function onClose($serv,$fd){
        echo "clientid:{$fd}".PHP_EOL;
    }

}
$http = new Http();