bench.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. class Controller_Bench extends Controller
  3. {
  4. private function getUniqueRandomNumbers($count, $min, $max)
  5. {
  6. $res = array();
  7. do {
  8. $res[\mt_rand($min, $max)] = 1;
  9. } while (\count($res) < $count);
  10. return \array_keys($res);
  11. }
  12. public function action_json()
  13. {
  14. return new Response(json_encode(array(
  15. 'message' => 'Hello, World!'
  16. )), 200, array(
  17. 'Content-Type' => 'application/json'
  18. ));
  19. }
  20. public function action_db()
  21. {
  22. $worlds = Model_World::find(mt_rand(1, 10000))->toJson();
  23. return new Response(json_encode($worlds), 200, array(
  24. 'Content-Type' => 'application/json'
  25. ));
  26. }
  27. public function action_dbquery()
  28. {
  29. $queries = Input::get('queries', 1);
  30. $queries = is_numeric($queries) ? min(max($queries, 1), 500) : 1;
  31. $worlds = array();
  32. $numbers = $this->getUniqueRandomNumbers($queries, 1, 10000);
  33. foreach ($numbers as $id) {
  34. $worlds[] = Model_World::find($id)->toJson();
  35. }
  36. return new Response(json_encode($worlds), 200, array(
  37. 'Content-Type' => 'application/json'
  38. ));
  39. }
  40. public function action_fortunes()
  41. {
  42. $fortunes = Model_Fortune::find('all');
  43. $runtimeFortune = new Model_Fortune();
  44. $runtimeFortune->id = 0;
  45. $runtimeFortune->message = 'Additional fortune added at request time.';
  46. $fortunes[] = $runtimeFortune;
  47. usort($fortunes, function ($left, $right) {
  48. if ($left->message === $right->message) {
  49. return 0;
  50. } else if ($left->message > $right->message) {
  51. return 1;
  52. } else {
  53. return - 1;
  54. }
  55. });
  56. return View::forge('bench/fortunes', [
  57. 'fortunes' => $fortunes
  58. ]);
  59. }
  60. }