定义任务

一个类就是一个任务组,类里面的每个方法,就是一个任务。

注解

@Task

  • name 定义任务名称,缺省时类名,用于投递任务,且必须唯一
  • coroutine 是否启动一个协程运行业务逻辑,缺省是false (由于Swoole的TaskWorker尚不支持运行协程代码,顾此选项目前仅做预留)

实例

  1. /**
  2. * @Task("demo")
  3. */
  4. class DemoTask
  5. {
  6. /**
  7. * Deliver coroutine task
  8. */
  9. public function coroutineJob(string $p1, string $p2): string
  10. {
  11. return sprintf('co-%s-%s', $p1, $p2);
  12. }
  13. /**
  14. * Deliver async task
  15. */
  16. public function asyncJob(string $p1, string $p2)
  17. {
  18. // Do anything you want.
  19. return sprintf('async-%s-%s', $p1, $p2);
  20. }
  21. }

任务逻辑里面可以使用 Swoft 所有功能,唯一不一样的是,如果任务不是协程模式运行,所有I/O操作,框架底层会自动切换成传统的同步阻塞,但是使用方法是一样的。