5.2对比httpserver优化的其他位置的调用说明

把发送短信、邮箱耗时任务的剥离:

 public function onRequest($request,$response){
 ......
 $_POST = [];
    if(isset($request->post )){
       foreach($request->post as $k=>$v){
            $_POST[$k] = $v;
        }
    }
    $_POST['http_server'] = $this->http;//在这个request的方法中 把这个服务的对象返回到客户的请求中,
    让客户请求时可以帮助调用http 完成task任务的分配创建

 ......
 }

    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;
    }

分配task的类的创建:

<?php
namespace  app\common\lib\task;
use app\common\lib\Sms;
use app\common\lib\Redis;
use app\common\lib\redis\Predis;

class Task{
    /*
     *
     */
    public function  sendSms($data)
    {
        // print_r($data);

        try {

            $url = config('app.server') . '/public/mail';
            $arr = ['code' => $data['code'], 'user' => Redis::smsKey($data['phone'])];

            $res = Sms::curl($url, $arr);
        } catch (\Exception $e) {

            return false;
        }
        $result = json_decode($res);
        //       //验证邮件服务反馈
        if ($result->getEmail == 'ok'){
            Predis::getInstance()->set(Redis::smsKey($data['phone']), $data['code'], config('redis.out_time'));
            return 200;
        }else{
            return false;
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_17040587/article/details/84104913
今日推荐