task_num.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. $serv = new swoole_server("127.0.0.1", 9501);
  3. $serv->set(array(
  4. 'worker_num' => 1,
  5. 'task_worker_num' => 2,
  6. //'task_tmpdir' => '/data/task/',
  7. ));
  8. $serv->on('Receive', function(swoole_server $serv, $fd, $reactor_id, $data) {
  9. //AsyncTask
  10. $data = intval($data);
  11. for($i=0;$i<$data;$i++) {
  12. $tid = mt_rand(0,1);
  13. echo "data:{$i} to task: {$tid} ".PHP_EOL;
  14. $serv->task($i, $tid);
  15. }
  16. });
  17. $serv->on('Task', function (swoole_server $serv, $task_id, $reactor_id, $data) {
  18. echo "onTask: [PID=".posix_getpid()."]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
  19. sleep(10);
  20. //$serv->finish($data);
  21. echo 'finish'.PHP_EOL;
  22. return;
  23. });
  24. $serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
  25. echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
  26. });
  27. $serv->on('Timer', function(swoole_server $serv, $time) {
  28. echo "{$time} call".PHP_EOL;
  29. print_r($serv->stats());
  30. });
  31. $serv->on('workerStart', function($serv, $worker_id) {
  32. global $argv;
  33. if($worker_id >= $serv->setting['worker_num']) {
  34. swoole_set_process_name("php {$argv[0]}: task_worker");
  35. } else {
  36. $serv->addtimer(5000);
  37. swoole_set_process_name("php {$argv[0]}: worker");
  38. }
  39. });
  40. $serv->start();