app-async.php 2.6 KB

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