• 异步任务

    异步任务

    异步任务使用的 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. }

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