把发送短信、邮箱耗时任务的剥离:
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;
}
}
}