send_yield.php 706 B

12345678910111213141516171819202122232425262728
  1. <?php
  2. $serv = new Swoole\Server("0.0.0.0", 9501, SWOOLE_BASE);
  3. $serv->set(array(
  4. 'worker_num' => 1,
  5. 'send_yield' => true,
  6. 'socket_buffer_size' => 512 * 1024,
  7. 'kernel_socket_buffer_size' => 65536,
  8. ));
  9. $serv->on('connect', function ($serv, $fd) {
  10. echo "Client:Connect.\n";
  11. });
  12. $serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
  13. $length = 0;
  14. $size = 1024 * 128;
  15. while (true)
  16. {
  17. $ret = $serv->send($fd, str_repeat('A', $size));
  18. if ($ret == false) {
  19. break;
  20. }
  21. $length += $size;
  22. echo "send $length success\n";
  23. }
  24. });
  25. $serv->on('close', function ($serv, $fd) {
  26. echo "Client: Close.\n";
  27. });
  28. $serv->start();