后台任务

    项目配置文件中mainServer.configs.task_worker_num一定要配置为大于0,否则无法使用后台任务。

    类名无所谓,实现ITaskHandler接口和两个方法即可。

    1. TaskManager::post(new TaskInfo(
    2. new TestTask,
    3. // 执行任务的参数,构造方法可以接收一个数组
    4. new TaskParam([
    5. 'time' => time(),
    6. ])
    7. ));

    投递任务后阻塞等待执行完毕或超时,返回值为任务执行结果或false

    1. // 上面定义的类的实例
    2. new TestTask,
    3. // 执行任务的参数,构造方法可以接收一个数组
    4. new TaskParam([
    5. 'time' => time(),
    6. ])
    7. )],
    8. 0.5);

    传入数组和超时时间,投递后挂起协程,当全部执行完毕或超时后返回结果。返回值为数组,对应每个任务的执行结果。

    投递异步任务

    1. TaskManager::nPost(
    2. 'testTask'
    3. // 任务参数
    4. , [
    5. 'time' => time(),
    6. ]
    7. );

    调用后立即返回,不影响下面代码的执行

    同步投递任务

    投递任务后阻塞等待执行完毕或超时,返回值为任务执行结果或false

    协程批量投递任务

    1. TaskManager::postWait([
    2. ['testTask', ['time'=>time()]],
    3. ['testTask', ['time'=>time()]],
    4. ],
    5. // 最长等待时间,单位:秒