index.php 6.3 KB

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