index.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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',2);
  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(array('message' => 'Hello, World!'));
  23. });
  24. // DB RAW test database-single-query
  25. $f3->route('GET /db', function ($f3,$params) {
  26. /** @var Base $f3 */
  27. $dbc = $f3->get('DBS');
  28. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  29. $id = mt_rand(1, 10000);
  30. $res = $db->exec('SELECT id, randomNumber FROM World WHERE id = ?',$id,0,false);
  31. $result = array(
  32. 'id' => (int) $res[0]['id'],
  33. 'randomNumber' => (int) $res[0]['randomNumber'],
  34. );
  35. header("Content-type: application/json");
  36. echo json_encode($result);
  37. }
  38. );
  39. // DB RAW test database-multiple-query
  40. $f3->route(array(
  41. 'GET /db-multiple',
  42. 'GET /db-multiple/@queries',
  43. ),
  44. function ($f3,$params) {
  45. /** @var Base $f3 */
  46. $queries = 1;
  47. if (isset($params['queries'])) {
  48. $queries = (int) $params['queries'];
  49. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  50. }
  51. $dbc = $f3->get('DBS');
  52. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  53. $result = array();
  54. for ($i = 0; $i < $queries; $i++) {
  55. $id = mt_rand(1, 10000);
  56. $res = $db->exec('SELECT id, randomNumber FROM World WHERE id = ?',$id,0,false);
  57. $result[] = array(
  58. 'id' => (int) $res[0]['id'],
  59. 'randomNumber' => (int) $res[0]['randomNumber'],
  60. );
  61. }
  62. header("Content-type: application/json");
  63. echo json_encode($result);
  64. }
  65. );
  66. // DB ORM test database-single-query
  67. $f3->route('GET /db-orm', function ($f3, $params) {
  68. /** @var Base $f3 */
  69. $dbc = $f3->get('DBS');
  70. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  71. $mapper = new \DB\SQL\Mapper($db,'World');
  72. $id = mt_rand(1, 10000);
  73. $mapper->load(array('id = ?',$id));
  74. header("Content-type: application/json");
  75. echo json_encode($mapper->cast());
  76. }
  77. );
  78. // DB ORM test database-multiple-queries
  79. $f3->route(
  80. array(
  81. 'GET /db-orm-multiple',
  82. 'GET /db-orm-multiple/@queries', // database-multiple-queries
  83. ),
  84. function ($f3, $params) {
  85. /** @var Base $f3 */
  86. $queries = 1;
  87. if(isset($params['queries'])) {
  88. $queries = (int) $params['queries'];
  89. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  90. }
  91. $dbc = $f3->get('DBS');
  92. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  93. $mapper = new \DB\SQL\Mapper($db,'World');
  94. $result = array();
  95. for ($i = 0; $i < $queries; $i++) {
  96. $id = mt_rand(1, 10000);
  97. $mapper->load(array('id = ?',$id));
  98. $result[] = $mapper->cast();
  99. }
  100. header("Content-type: application/json");
  101. echo json_encode($result);
  102. }
  103. );
  104. $f3->route('GET /plaintext', function ($f3) {
  105. header("Content-type: text/plain");
  106. echo "Hello, World!";
  107. });
  108. $f3->route('GET /fortune', function ($f3) {
  109. /** @var Base $f3 */
  110. $dbc = $f3->get('DBS');
  111. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  112. $result = $db->exec('SELECT id, message FROM Fortune');
  113. $result[] = array(
  114. 'id'=>0,
  115. 'message'=>'Additional fortune added at request time.'
  116. );
  117. $mtx = \Matrix::instance();
  118. $mtx->sort($result,'message');
  119. $f3->set('result',$result);
  120. echo \Template::instance()->render('fortune.html');
  121. });
  122. $f3->route(array(
  123. 'GET /update-raw',
  124. 'GET /update-raw/@queries'
  125. ), function($f3,$params) {
  126. /** @var Base $f3 */
  127. $queries = 1;
  128. if (isset($params['queries'])) {
  129. $queries = (int) $params['queries'];
  130. $queries = ( $queries < 1 ) ? 1 : ( ( $queries > 500 ) ? 500 : $queries );
  131. }
  132. $dbc = $f3->get('DBS');
  133. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  134. $result = array();
  135. for ($i = 0; $i < $queries; $i++) {
  136. $id = mt_rand(1, 10000);
  137. $row = array(
  138. 'id'=>$id,
  139. 'randomNumber'=>$db->exec('SELECT randomNumber FROM World WHERE id = ?',$id,0,false)
  140. );
  141. $rnu = mt_rand(1, 10000);
  142. $row['randomNumber'] = $rnu;
  143. $db->exec('UPDATE World SET randomNumber = :ranNum WHERE id = :id', array(':ranNum'=>$rnu,':id'=>$id),0,false);
  144. $result[] = $row;
  145. }
  146. header("Content-type: application/json");
  147. echo json_encode($result);
  148. });
  149. $f3->route(array(
  150. 'GET /update-orm',
  151. 'GET /update-orm/@queries'
  152. ), function($f3,$params) {
  153. /** @var Base $f3 */
  154. $queries = 1;
  155. if (isset($params['queries'])) {
  156. $queries = (int) $params['queries'];
  157. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  158. }
  159. $dbc = $f3->get('DBS');
  160. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  161. $world = new \DB\SQL\Mapper($db,'World');
  162. $result = array();
  163. for ($i = 0; $i < $queries; $i++) {
  164. $id = mt_rand(1, 10000);
  165. $world->load(array('id = ?', $id));
  166. $world->randomNumber = mt_rand(1, 10000);
  167. $world->save();
  168. $result[] = $world->cast();
  169. }
  170. header("Content-type: application/json");
  171. echo json_encode($result);
  172. });
  173. $f3->run();