openswoole-server-pdo.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. require_once __DIR__.'/db-no-async.php';
  3. use OpenSwoole\Http\Request;
  4. use OpenSwoole\Http\Response;
  5. use OpenSwoole\Http\Server;
  6. use OpenSwoole\Util;
  7. $server = new Server('0.0.0.0', 8080, OpenSwoole\Server::SIMPLE_MODE);
  8. $server->set([
  9. 'worker_num' => Util::getCPUNum() * 2,
  10. 'log_file' => '/dev/null',
  11. 'log_level' => 5,
  12. 'open_tcp_nodelay' => true,
  13. ]);
  14. /**
  15. * On start of the PHP worker. One worker per server process is started.
  16. */
  17. $server->on('workerStart', function () {
  18. Db::init();
  19. });
  20. /**
  21. * On every request to the (web)server, execute the following code
  22. */
  23. $server->on('request', static function (Request $req, Response $res) {
  24. try {
  25. switch ($req->server['request_uri']) {
  26. case '/json':
  27. $res->header('Content-Type', 'application/json');
  28. $res->header('Server', 'os');
  29. $res->end(json_encode(['message' => 'Hello, World!']));
  30. break;
  31. case '/plaintext':
  32. $res->header('Content-Type', 'text/plain; charset=utf-8');
  33. $res->header('Server', 'os');
  34. $res->end('Hello, World!');
  35. break;
  36. case '/db':
  37. $res->header('Content-Type', 'application/json');
  38. $res->header('Server', 'os');
  39. $res->end(db());
  40. break;
  41. case '/query':
  42. $res->header('Content-Type', 'application/json');
  43. $res->header('Server', 'os');
  44. $res->end(query((int) $req->get['q'] ?? 1));
  45. break;
  46. case '/fortunes':
  47. $res->header('Content-Type', 'text/html; charset=utf-8');
  48. $res->header('Server', 'os');
  49. $res->end(fortunes());
  50. break;
  51. case '/updates':
  52. $res->header('Content-Type', 'application/json');
  53. $res->header('Server', 'os');
  54. $res->end(updates((int) $req->get['q'] ?? 1));
  55. break;
  56. default:
  57. $res->status(404);
  58. $res->end('Not Found.');
  59. }
  60. } catch (\Throwable $e) {
  61. $res->status(500);
  62. $res->end('code ' . $e->getCode(). 'msg: '. $e->getMessage());
  63. }
  64. });
  65. $server->start();