index.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. // drop startup errors
  3. // if (function_exists('error_clear_last'))
  4. // error_clear_last();
  5. // error_reporting(0);
  6. /** @var Base $f3 */
  7. $f3 = require('src/base.php');
  8. error_reporting(-1);
  9. $f3->set('DEBUG', 0);
  10. $f3->set('HIGHLIGHT', false);
  11. $f3->set('CACHE', 'folder=tmp/cache/');
  12. $f3->set('UI', 'ui/');
  13. $f3->set('ONERROR', function ($f3) {
  14. echo $f3->get('ERROR.code') . ': ' . $f3->get('ERROR.text') . "\n" . $f3->get('ERROR.trace');
  15. });
  16. $f3->set('DBS', array('mysql:host=tfb-database;port=3306;dbname=hello_world', 'benchmarkdbuser', 'benchmarkdbpass', [\PDO::ATTR_PERSISTENT => TRUE]));
  17. // http: //www.techempower.com/benchmarks/#section=code
  18. // JSON test
  19. $f3->route('GET /json', function ($f3) {
  20. /** @var Base $f3 */
  21. header('Content-type: application/json');
  22. echo json_encode(['message' => 'Hello, World!']);
  23. });
  24. // DB RAW test database-single-query
  25. $f3->route(
  26. 'GET /db',
  27. function ($f3) {
  28. /** @var Base $f3 */
  29. $db = new \DB\SQL(...$f3->get('DBS'));
  30. $id = mt_rand(1, 10000);
  31. $res = $db->exec('SELECT id, randomNumber FROM World WHERE id = ?', $id, 0, false);
  32. $result = array(
  33. 'id' => (int) $res[0]['id'],
  34. 'randomNumber' => (int) $res[0]['randomNumber'],
  35. );
  36. header('Content-type: application/json');
  37. echo json_encode($result);
  38. }
  39. );
  40. // DB RAW test database-multiple-query
  41. $f3->route(
  42. array(
  43. 'GET /db-multiple',
  44. 'GET /db-multiple/',
  45. 'GET /db-multiple/@queries',
  46. ),
  47. function ($f3, $params) {
  48. /** @var Base $f3 */
  49. $queries = 1;
  50. if (isset($params['queries'])) {
  51. $queries = (int) $params['queries'];
  52. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  53. }
  54. $db = new \DB\SQL(...$f3->get('DBS'));
  55. $result = array();
  56. for ($i = 0; $i < $queries; ++$i) {
  57. $id = mt_rand(1, 10000);
  58. $res = $db->exec('SELECT id, randomNumber FROM World WHERE id = ?', $id, 0, false);
  59. $result[] = array(
  60. 'id' => (int) $res[0]['id'],
  61. 'randomNumber' => (int) $res[0]['randomNumber'],
  62. );
  63. }
  64. header('Content-type: application/json');
  65. echo json_encode($result);
  66. }
  67. );
  68. // DB ORM test database-single-query
  69. $f3->route(
  70. 'GET /db-orm',
  71. function ($f3) {
  72. /** @var Base $f3 */
  73. $db = new \DB\SQL(...$f3->get('DBS'));
  74. $mapper = new \DB\SQL\Mapper($db, 'World');
  75. $id = mt_rand(1, 10000);
  76. $mapper->load(array('id = ?', $id));
  77. header('Content-type: application/json');
  78. echo json_encode($mapper->cast());
  79. }
  80. );
  81. // DB ORM test database-multiple-queries
  82. $f3->route(
  83. array(
  84. 'GET /db-orm-multiple',
  85. 'GET /db-orm-multiple/',
  86. 'GET /db-orm-multiple/@queries', // database-multiple-queries
  87. ),
  88. function ($f3, $params) {
  89. /** @var Base $f3 */
  90. $queries = 1;
  91. if (isset($params['queries'])) {
  92. $queries = (int) $params['queries'];
  93. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  94. }
  95. $db = new \DB\SQL(...$f3->get('DBS'));
  96. $mapper = new \DB\SQL\Mapper($db, 'World');
  97. $result = array();
  98. for ($i = 0; $i < $queries; ++$i) {
  99. $id = mt_rand(1, 10000);
  100. $mapper->load(array('id = ?', $id));
  101. $result[] = $mapper->cast();
  102. }
  103. header('Content-type: application/json');
  104. echo json_encode($result);
  105. }
  106. );
  107. $f3->route('GET /plaintext', function () {
  108. header('Content-type: text/plain');
  109. echo 'Hello, World!';
  110. });
  111. $f3->route('GET /fortune-orm', function ($f3) {
  112. /** @var Base $f3 */
  113. $db = new \DB\SQL(...$f3->get('DBS'));
  114. $mapper = new \DB\SQL\Mapper($db, 'Fortune');
  115. $result = $mapper->find();
  116. //$result = $db->exec('SELECT id, message FROM Fortune');
  117. $result[] = [
  118. 'id' => 0,
  119. 'message' => 'Additional fortune added at request time.'
  120. ];
  121. $mtx = \Matrix::instance();
  122. $mtx->sort($result, 'message');
  123. $f3->set('result', $result);
  124. echo \Template::instance()->render('fortune.html');
  125. });
  126. $f3->route('GET /fortune-raw', function ($f3) {
  127. /** @var Base $f3 */
  128. $db = new \DB\SQL(...$f3->get('DBS'));
  129. $result = $db->exec('SELECT id, message FROM Fortune');
  130. $result[] = array(
  131. 'id' => 0,
  132. 'message' => 'Additional fortune added at request time.'
  133. );
  134. $mtx = \Matrix::instance();
  135. $mtx->sort($result, 'message');
  136. $f3->set('result', $result);
  137. echo \Template::instance()->render('fortune.html');
  138. });
  139. $f3->route(array(
  140. 'GET /update-raw',
  141. 'GET /update-raw/',
  142. 'GET /update-raw/@queries'
  143. ), function ($f3, $params) {
  144. /** @var Base $f3 */
  145. $queries = 1;
  146. if (isset($params['queries'])) {
  147. $queries = (int) $params['queries'];
  148. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  149. }
  150. $db = new \DB\SQL(...$f3->get('DBS'));
  151. $result = array();
  152. for ($i = 0; $i < $queries; ++$i) {
  153. $id = mt_rand(1, 10000);
  154. $row = array(
  155. 'id' => $id,
  156. 'randomNumber' => $db->exec('SELECT randomNumber FROM World WHERE id = ?', $id, 0, false)
  157. );
  158. $rnu = mt_rand(1, 10000);
  159. $row['randomNumber'] = $rnu;
  160. $db->exec('UPDATE World SET randomNumber = :ranNum WHERE id = :id', array(':ranNum' => $rnu, ':id' => $id), 0, false);
  161. $result[] = $row;
  162. }
  163. header('Content-type: application/json');
  164. echo json_encode($result);
  165. });
  166. $f3->route(array(
  167. 'GET /update-orm',
  168. 'GET /update-orm/',
  169. 'GET /update-orm/@queries'
  170. ), function ($f3, $params) {
  171. /** @var Base $f3 */
  172. $queries = 1;
  173. if (isset($params['queries'])) {
  174. $queries = (int) $params['queries'];
  175. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  176. }
  177. $db = new \DB\SQL(...$f3->get('DBS'));
  178. $world = new \DB\SQL\Mapper($db, 'World');
  179. $result = array();
  180. for ($i = 0; $i < $queries; ++$i) {
  181. $id = mt_rand(1, 10000);
  182. $world->load(array('id = ?', $id));
  183. $world->randomNumber = mt_rand(1, 10000);
  184. $world->save();
  185. $result[] = $world->cast();
  186. }
  187. header('Content-type: application/json');
  188. echo json_encode($result);
  189. });
  190. $f3->run();