task.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. $serv = new swoole_server("127.0.0.1", 9501,SWOOLE_BASE);
  3. $serv->set(array(
  4. //'worker_num' => 1,
  5. 'task_worker_num' => 1,
  6. // 'task_ipc_mode' => 3,
  7. // 'message_queue_key' => 0x70001001,
  8. //'task_tmpdir' => '/data/task/',
  9. ));
  10. $serv->on('Receive', function(swoole_server $serv, $fd, $reactor_id, $data) {
  11. //AsyncTask
  12. $data = trim($data);
  13. //$data = str_repeat('A', 8192*100);
  14. // if ($data == 'async')
  15. if(false)
  16. // if (true)
  17. {
  18. $task_id = $serv->task($data, 0);
  19. $serv->send($fd, "Dispath AsyncTask: id=$task_id\n");
  20. }
  21. //Sync Task
  22. else
  23. {
  24. $res = $serv->taskwait($data, 10);
  25. echo "Dispath SyncTask: result=".$res.PHP_EOL;
  26. }
  27. //$serv->send($fd, "OK\n");
  28. });
  29. $serv->on('Task', function (swoole_server $serv, $task_id, $reactor_id, $data) {
  30. echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
  31. $serv->finish($data);
  32. // return $data;
  33. });
  34. $serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
  35. echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
  36. });
  37. $serv->on('workerStart', function($serv, $worker_id) {
  38. global $argv;
  39. if($worker_id >= $serv->setting['worker_num']) {
  40. swoole_set_process_name("php {$argv[0]}: task_worker");
  41. } else {
  42. swoole_set_process_name("php {$argv[0]}: worker");
  43. }
  44. });
  45. $serv->start();