index.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /** @var Base $f3 */
  3. $f3=require('lib/base.php');
  4. $f3->set('DEBUG',2);
  5. $f3->set('CACHE','folder=tmp/cache/');
  6. $f3->set('UI','ui/');
  7. $f3->set('DBS',array('mysql:host=localhost;port=3306;dbname=hello_world','benchmarkdbuser','benchmarkdbpass'));
  8. // http: //www.techempower.com/benchmarks/#section=code
  9. // JSON test
  10. $f3->route('GET /json',function($f3) {
  11. /** @var Base $f3 */
  12. header("Content-type: application/json");
  13. echo json_encode(array('message' => 'Hello, World!'));
  14. });
  15. // DB RAW test
  16. $f3->route(
  17. array(
  18. 'GET /db', // database-single-query
  19. 'GET /db/@queries', // database-multiple-queries
  20. ),
  21. function ($f3,$params) {
  22. /** @var Base $f3 */
  23. $single = !isset($params['queries']);
  24. if ($single)
  25. $queries = 1;
  26. else {
  27. $queries = (int) $params['queries'];
  28. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  29. }
  30. $dbc = $f3->get('DBS');
  31. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  32. $result = array();
  33. for ($i = 0; $i < $queries; $i++) {
  34. $id = mt_rand(1, 10000);
  35. $res = $db->exec('SELECT randomNumber FROM World WHERE id = ?',$id,0,false);
  36. $result[] = $res[0];
  37. }
  38. header("Content-type: application/json");
  39. echo json_encode($single ? $result[0] : $result);
  40. }
  41. );
  42. // DB ORM test
  43. $f3->route(
  44. array(
  45. 'GET /db-orm', // database-single-query
  46. 'GET /db-orm/@queries', // database-multiple-queries
  47. ),
  48. function ($f3, $params) {
  49. /** @var Base $f3 */
  50. $single = !isset($params['queries']);
  51. if ($single)
  52. $queries = 1;
  53. else {
  54. $queries = (int) $params['queries'];
  55. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  56. }
  57. $dbc = $f3->get('DBS');
  58. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  59. $mapper = new \DB\SQL\Mapper($db,'World');
  60. $result = array();
  61. for ($i = 0; $i < $queries; $i++) {
  62. $id = mt_rand(1, 10000);
  63. $mapper->load(array('id = ?',$id));
  64. $result[] = $mapper->cast();
  65. }
  66. header("Content-type: application/json");
  67. echo json_encode($single ? $result[0] : $result);
  68. }
  69. );
  70. $f3->route('GET /plaintext', function ($f3) {
  71. echo "Hello, World!";
  72. });
  73. $f3->route('GET /fortune', function ($f3) {
  74. /** @var Base $f3 */
  75. $dbc = $f3->get('DBS');
  76. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  77. $result = $db->exec('SELECT id, message FROM Fortune');
  78. $result[] = array(
  79. 'id'=>0,
  80. 'message'=>'Additional fortune added at request time.'
  81. );
  82. $mtx = \Matrix::instance();
  83. $mtx->sort($result,'message');
  84. $f3->set('result',$result);
  85. echo \Template::instance()->render('fortune.html');
  86. });
  87. $f3->route('GET /update-raw/@queries', function($f3,$params) {
  88. /** @var Base $f3 */
  89. $queries = (int) $params['queries'];
  90. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  91. $dbc = $f3->get('DBS');
  92. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  93. $result = array();
  94. for ($i = 0; $i < $queries; $i++) {
  95. $id = mt_rand(1, 10000);
  96. $row = array(
  97. 'id'=>$id,
  98. 'randomNumber'=>$db->exec('SELECT randomNumber FROM World WHERE id = ?',$id,0,false)
  99. );
  100. $rnu = mt_rand(1, 10000);
  101. $row['randomNumber'] = $rnu;
  102. $db->exec('UPDATE World SET randomNumber = :ranNum WHERE id = :id', array(':ranNum'=>$rnu,':id'=>$id),0,false);
  103. $result[] = $row;
  104. }
  105. header("Content-type: application/json");
  106. echo json_encode($result);
  107. });
  108. $f3->route('GET /update-orm/@queries', function($f3,$params) {
  109. /** @var Base $f3 */
  110. $queries = (int) $params['queries'];
  111. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  112. $dbc = $f3->get('DBS');
  113. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  114. $world = new \DB\SQL\Mapper($db,'World');
  115. $result = array();
  116. for ($i = 0; $i < $queries; $i++) {
  117. $id = mt_rand(1, 10000);
  118. $world->load(array('id = ?', $id));
  119. $world->randomNumber = mt_rand(1, 10000);
  120. $world->save();
  121. $result[] = $world->cast();
  122. }
  123. header("Content-type: application/json");
  124. echo json_encode($result);
  125. });
  126. $f3->run();