异步任务
异步任务使用的 task做的,建议将耗时操作(前端不需要等待)放到task中,如给用户发邮件,数据同步等
配置
'swoole_http'=>[
'ip'=>'0.0.0.0',
'port'=>9501,
'document_root'=>ROOT_PATH,
'enable_static_handler'=>false,
'worker_num'=>20,
'task_worker_num'=>4, //默认开启几个 task 进程 这个控制进程数
'task_max_request'=>0
],
使用
Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']);
那么会异步调用MyTaskService的task方法
class MyTaskService{
public function task($key, $name){
}
}
如果你的项目是 sass 类型的 会有数据库和 redis 间的切换或者有其他因进程不同需要初始化 task 环境的需求
写个类集成自TaskConfig
class TaskConfigInit extends TaskConfig{
public function _initialize(){
}
//这个方法是在 work 进程的可以获取到work 进程的配置
public function getTaskInitConfig(){
$site = CloudSite::fromConfig();
return ['db_name'=>$site->db_name,'redis_select'=>$site->redis_select];
}
//这个方法是在 task 进程执行的 可以拿到 work 进程getTaskInitConfig 返回的参数进行初始化
public function setTaskInit($config){
}
}