task_coro.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. $serv = new swoole_server("127.0.0.1", 9501);
  3. $serv->set(array(
  4. 'worker_num' => 1,
  5. 'task_worker_num' => 4,
  6. //'task_tmpdir' => '/data/task/',
  7. ));
  8. $serv->on('Receive', function(swoole_server $serv, $fd, $reactor_id, $data) {
  9. $tasks[] = mt_rand(1000, 9999);
  10. $tasks[] = mt_rand(1000, 9999);
  11. $tasks[] = mt_rand(1000, 9999);
  12. $tasks[] = mt_rand(1000, 9999);
  13. //等待所有Task结果返回,超时为10s
  14. var_dump($tasks);
  15. $results = $serv->taskWaitMulti($tasks, 2);
  16. var_dump($results);
  17. });
  18. $serv->on('Task', function (swoole_server $serv, $task_id, $reactor_id, $data) {
  19. echo "onTask: [ID={$serv->worker_id}]: task_id=$task_id, data=$data, data_len=".strlen($data).".".PHP_EOL;
  20. //测试超时
  21. if ($serv->worker_id % 4 == 3)
  22. {
  23. sleep(3);
  24. }
  25. elseif ($serv->worker_id % 4 == 2)
  26. {
  27. usleep(1500000);
  28. }
  29. elseif ($serv->worker_id % 4 == 1)
  30. {
  31. usleep(200000);
  32. }
  33. return "hello world.[{$data}]";
  34. });
  35. $serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
  36. echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
  37. });
  38. $serv->start();