index.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. require_once 'vendor/autoload.php';
  3. error_reporting(-1);
  4. Flight::register('db', PDO::class, [ 'mysql:host=tfb-database;port=3306;dbname=hello_world', 'benchmarkdbuser', 'benchmarkdbpass', [ \PDO::ATTR_PERSISTENT => TRUE ] ]);
  5. // JSON test
  6. Flight::route('/json', function() {
  7. Flight::json(['message' => 'Hello, World!']);
  8. });
  9. // Plaintext test
  10. Flight::route('/plaintext', function() {
  11. Flight::response()
  12. ->header('Content-Type', 'text/plain')
  13. ->write('Hello, World!')
  14. ->send();
  15. });
  16. // DB test
  17. Flight::route('/db', function() {
  18. $id = mt_rand(1, 10000);
  19. $db = Flight::db();
  20. $stmt = $db->prepare('SELECT * FROM World WHERE id = ?');
  21. $stmt->execute([ $id ]);
  22. $world = $stmt->fetch();
  23. // Cast fields to int so they don't get wrapped with quotes
  24. $world = [
  25. 'id' => (int) $world['id'],
  26. 'randomNumber' => (int) $world['randomNumber']
  27. ];
  28. Flight::json($world);
  29. });
  30. // DB multiple test
  31. Flight::route('/db-multiple', function () {
  32. $queries = Flight::request()->query['queries'];
  33. if (is_numeric($queries)) {
  34. $queries = max(1, min($queries, 500));
  35. } else {
  36. $queries = 1;
  37. }
  38. $db = Flight::db();
  39. $stmt = $db->prepare('SELECT * FROM World WHERE id = ?');
  40. $worlds = [];
  41. for ($i = 0; $i < $queries; ++$i) {
  42. $random_id = mt_rand(1, 10000);
  43. $stmt->execute([ $random_id ]);
  44. $world = $stmt->fetch();
  45. // Cast fields to int so they don't get wrapped with quotes
  46. $world = [
  47. 'id' => (int) $world['id'],
  48. 'randomNumber' => (int) $world['randomNumber']
  49. ];
  50. $worlds[] = $world;
  51. }
  52. Flight::json($worlds);
  53. });
  54. // DB Update Test
  55. Flight::route('/updates', function () {
  56. $queries = Flight::request()->query['queries'];
  57. if (is_numeric($queries)) {
  58. $queries = max(1, min($queries, 500));
  59. } else {
  60. $queries = 1;
  61. }
  62. $db = Flight::db();
  63. $select_stmt = $db->prepare('SELECT id FROM World WHERE id = ?');
  64. $update_stmt = $db->prepare('UPDATE World SET randomNumber = ? WHERE id = ?');
  65. $worlds = [];
  66. for ($i = 0; $i < $queries; ++$i) {
  67. $id = mt_rand(1, 10000);
  68. $random_number = mt_rand(1, 10000);
  69. $select_stmt->execute([$id]);
  70. $world = $select_stmt->fetch();
  71. $world = [
  72. 'id' => (int) $world['id'],
  73. 'randomNumber' => $random_number
  74. ];
  75. $update_stmt->execute([ $random_number, (int) $world['id'] ]);
  76. $worlds[] = $world;
  77. }
  78. Flight::json($worlds);
  79. });
  80. // Fortunes Test
  81. Flight::route('/fortunes', function() {
  82. $db = Flight::db();
  83. $fortunes = $db->query('SELECT * FROM Fortune')->fetchAll(PDO::FETCH_KEY_PAIR);
  84. $fortunes[0] = 'Additional fortune added at request time.';
  85. asort($fortunes);
  86. Flight::render('fortunes.php', [ 'fortunes' => $fortunes ]);
  87. });
  88. Flight::start();