reload_aysnc.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. $serv = new swoole_server("0.0.0.0", 9501);
  3. $serv->set([
  4. 'worker_num' => 4,
  5. 'reload_async' => true,
  6. 'max_wait_time' => 5,
  7. 'task_worker_num' => 2,
  8. ]);
  9. $serv->on('WorkerStart', function ($serv, $wid) {
  10. echo "Worker#$wid is started\n";
  11. if ($serv->taskworker) {
  12. return;
  13. }
  14. swoole_event::add(STDIN, function () use ($wid) {
  15. $data = fread(STDIN, 8192);
  16. if ($data) {
  17. echo "#{$wid}: $data";
  18. }
  19. });
  20. });
  21. $serv->on('receive', function (swoole_server $serv, $fd, $reactor_id, $data) {
  22. echo "[#".$serv->worker_id."]\tClient[$fd]: $data\n";
  23. });
  24. $serv->on('Task', function (swoole_server $serv, $task_id, $reactor_id, $data) {
  25. //echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
  26. // $serv->finish($data);
  27. return $data;
  28. });
  29. $serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
  30. echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
  31. });
  32. $serv->on('WorkerStop', function ($serv, $wid) {
  33. //sleep($wid + 1);
  34. });
  35. $serv->on('WorkerExit', function ($serv, $wid) {
  36. echo "WorkerExit, PID=".posix_getpid()."\t$wid\n";
  37. swoole_event::del(STDIN);
  38. });
  39. $serv->start();