异步任务

异步任务使用的 task做的,建议将耗时操作(前端不需要等待)放到task中,如给用户发邮件,数据同步等

配置

  1. 'swoole_http'=>[
  2. 'ip'=>'0.0.0.0',
  3. 'port'=>9501,
  4. 'document_root'=>ROOT_PATH,
  5. 'enable_static_handler'=>false,
  6. 'worker_num'=>20,
  7. 'task_worker_num'=>4, //默认开启几个 task 进程 这个控制进程数
  8. 'task_max_request'=>0
  9. ],

使用

  1. Task::deliver(MyTaskService::class,'task',['key'=>100,'name'=>'test']);

那么会异步调用MyTaskService的task方法

  1. class MyTaskService{
  2. public function task($key, $name){
  3. }
  4. }

如果你的项目是 sass 类型的 会有数据库和 redis 间的切换或者有其他因进程不同需要初始化 task 环境的需求

写个类集成自TaskConfig

  1. class TaskConfigInit extends TaskConfig{
  2. public function _initialize(){
  3. }
  4. //这个方法是在 work 进程的可以获取到work 进程的配置
  5. public function getTaskInitConfig(){
  6. $site = CloudSite::fromConfig();
  7. return ['db_name'=>$site->db_name,'redis_select'=>$site->redis_select];
  8. }
  9. //这个方法是在 task 进程执行的 可以拿到 work 进程getTaskInitConfig 返回的参数进行初始化
  10. public function setTaskInit($config){
  11. }
  12. }

上一篇:定时任务   下一篇:命令行