index.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. $result[] = $db->exec('SELECT randomNumber FROM World WHERE id = ?',$id,0,false);
  36. }
  37. header("Content-type: application/json");
  38. echo json_encode($single ? $result[0] : $result);
  39. }
  40. );
  41. // DB ORM test
  42. $f3->route(
  43. array(
  44. 'GET /db-orm', // database-single-query
  45. 'GET /db-orm/@queries', // database-multiple-queries
  46. ),
  47. function ($f3, $params) {
  48. /** @var Base $f3 */
  49. $single = !isset($params['queries']);
  50. if ($single)
  51. $queries = 1;
  52. else {
  53. $queries = (int) $params['queries'];
  54. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  55. }
  56. $dbc = $f3->get('DBS');
  57. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  58. $mapper = new \DB\SQL\Mapper($db,'World');
  59. $result = array();
  60. for ($i = 0; $i < $queries; $i++) {
  61. $id = mt_rand(1, 10000);
  62. $mapper->load(array('id = ?',$id));
  63. $result[] = $mapper->cast();
  64. }
  65. header("Content-type: application/json");
  66. echo json_encode($single ? $result[0] : $result);
  67. }
  68. );
  69. $f3->route('GET /plaintext', function ($f3) {
  70. echo "Hello, World!";
  71. });
  72. $f3->route('GET /fortune', function ($f3) {
  73. /** @var Base $f3 */
  74. $dbc = $f3->get('DBS');
  75. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  76. $result = $db->exec('SELECT id, message FROM Fortune');
  77. $result[] = 'Additional fortune added at request time.';
  78. asort($result);
  79. $f3->set('result',$result);
  80. echo \Template::instance()->render('fortune.html');
  81. });
  82. $f3->route('GET /update-raw/@queries', function($f3,$params) {
  83. /** @var Base $f3 */
  84. $queries = (int) $params['queries'];
  85. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  86. $dbc = $f3->get('DBS');
  87. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  88. $result = array();
  89. for ($i = 0; $i < $queries; $i++) {
  90. $id = mt_rand(1, 10000);
  91. $row = array(
  92. 'id'=>$id,
  93. 'randomNumber'=>$db->exec('SELECT randomNumber FROM World WHERE id = ?',$id,0,false)
  94. );
  95. $rnu = mt_rand(1, 10000);
  96. $row['randomNumber'] = $rnu;
  97. $db->exec('UPDATE World SET randomNumber = :ranNum WHERE id = :id', array(':ranNum'=>$rnu,':id'=>$id),0,false);
  98. $result[] = $row;
  99. }
  100. header("Content-type: application/json");
  101. echo json_encode($result);
  102. });
  103. $f3->route('GET /update-orm/@queries', function($f3,$params) {
  104. /** @var Base $f3 */
  105. $queries = (int) $params['queries'];
  106. $queries = ($queries < 1) ? 1 : (($queries > 500) ? 500 : $queries);
  107. $dbc = $f3->get('DBS');
  108. $db = new \DB\SQL($dbc[0],$dbc[1],$dbc[2],array( \PDO::ATTR_PERSISTENT => TRUE ));
  109. $world = new \DB\SQL\Mapper($db,'World');
  110. $result = array();
  111. for ($i = 0; $i < $queries; $i++) {
  112. $id = mt_rand(1, 10000);
  113. $world->load(array('id = ?', $id));
  114. $world->randomNumber = mt_rand(1, 10000);
  115. $world->save();
  116. $result[] = $world->cast();
  117. }
  118. header("Content-type: application/json");
  119. echo json_encode($result);
  120. });
  121. $f3->run();