任务投递

console命令行里面,如果有需要可以通过 Http 和内置队列模式投递任务,队列模式只支持本机。队列模式投递任务,swoft-task 组件版本必须不小 v1.0.2-beta.

升级指南

更新组件

  1. composer update

升级配置

app/config/server.php新增队列配置

  1. return [
  2. // ....
  3. 'setting' => [
  4. 'task_ipc_mode' => env('TASK_IPC_MODE', 3),
  5. 'message_queue_key' => env('MESSAGE_QUEUE_KEY', 0x70001001),
  6. 'task_tmpdir' => env('TASK_TMPDIR', '/tmp'),
  7. ],
  8. ];

.env 新增配置信息

  1. TASK_IPC_MODE=3
  2. MESSAGE_QUEUE_KEY=1879052289
  3. TASK_TMPDIR=/tmp/

实例

任务投递和普通操作没有区别,且投递的是异步任务,可以监听onFinish(TaskEvent::FINISH_TASK)事件。详细见Task章节

  1. /**
  2. * Test command
  3. *
  4. * @Command(coroutine=false)
  5. */
  6. class TestCommand
  7. {
  8. /**
  9. * this task command
  10. *
  11. * @Usage
  12. * {fullCommand} [arguments] [options]
  13. *
  14. * @Options
  15. * -o,--opt This is command option
  16. *
  17. * @Arguments
  18. * arg This is argument
  19. *
  20. * @Example
  21. * {fullCommand}
  22. *
  23. * @Mapping()
  24. */
  25. public function task()
  26. {
  27. $result = Task::deliver('sync', 'console', ['console']);
  28. var_dump($result);
  29. }
  30. }

只支持console 非协程投递任务,如果是协程只能通过Http或RPC投递任务