app-async.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. require_once '/ngx_php7/t/lib/mysql.php';
  3. define('DBIP', gethostbyname('localhost'));
  4. define('DB_HOST', gethostbyname('tfb-database'));
  5. define('DB_PORT', '3306');
  6. define('DB_USER', 'benchmarkdbuser');
  7. define('DB_PASS', 'benchmarkdbpass');
  8. define('DB_NAME', 'hello_world');
  9. function fortune()
  10. {
  11. ngx_header_set('Content-Type', 'text/html;charset=UTF-8');
  12. $my = new php\ngx\mysql();
  13. yield from $my->connect(DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME);
  14. $ret = yield from $my->query('SELECT id, message FROM Fortune');
  15. $arr = [];
  16. foreach ($ret as $row) {
  17. $arr[$row['id']] = $row['message'];
  18. }
  19. $arr[0] = 'Additional fortune added at request time.';
  20. asort($arr);
  21. $html = '';
  22. foreach ($arr as $id => $message) {
  23. $message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8');
  24. $html .= "<tr><td>$id</td><td>$message</td></tr>";
  25. }
  26. echo '<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>',
  27. $html,
  28. '</table></body></html>';
  29. unset($my);
  30. }
  31. function query()
  32. {
  33. ngx_header_set('Content-Type', 'application/json');
  34. $my = new php\ngx\mysql();
  35. yield from $my->connect(DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME);
  36. $query_count = 1;
  37. $params = ngx_query_args();
  38. if ($params['queries'] > 1) {
  39. $query_count = $params['queries'] > 500 ? 500 : $params['queries'];
  40. }
  41. $arr = [];
  42. while ($query_count--) {
  43. $rand = mt_rand(1, 10000);
  44. $arr[] = (yield from $my->query("SELECT id,randomNumber FROM World WHERE id = {$rand}"))[0];
  45. }
  46. unset($my);
  47. echo json_encode($arr);
  48. }
  49. function db()
  50. {
  51. ngx_header_set('Content-Type', 'application/json');
  52. $my = new php\ngx\mysql();
  53. yield from $my->connect(DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME);
  54. $data = (yield from $my->query('SELECT id,randomNumber FROM World WHERE id = '.mt_rand(1, 10000)))[0];
  55. unset($my);
  56. echo json_encode($data);
  57. }
  58. function update()
  59. {
  60. ngx_header_set('Content-Type', 'application/json');
  61. $my = new php\ngx\mysql();
  62. yield from $my->connect(DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME);
  63. $query_count = 1;
  64. $params = ngx_query_args();
  65. if ($params['queries'] > 1) {
  66. $query_count = $params['queries'] > 500 ? 500 : $params['queries'];
  67. }
  68. $arr = [];
  69. while ($query_count--) {
  70. $id = mt_rand(1, 10000);
  71. $world = (yield from $my->query("SELECT id, randomNumber FROM World WHERE id = {$id}"))[0];
  72. $world['id'] = $id;
  73. $world['randomNumber'] = mt_rand(1, 10000);
  74. yield from $my->query("UPDATE World SET randomNumber = {$world['randomNumber']} WHERE id = {$world['id']}");
  75. $arr[] = $world;
  76. }
  77. unset($my);
  78. echo json_encode($arr);
  79. }