BenchController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. use Phalcon\Mvc\View,
  3. Phalcon\Mvc\Model\Resultset;
  4. class BenchController extends \Phalcon\Mvc\Controller
  5. {
  6. public function initialize()
  7. {
  8. // views must be renderd explicitly. safes processing time when not needed.
  9. $this->view->setRenderLevel(View::LEVEL_LAYOUT);
  10. }
  11. public function jsonAction()
  12. {
  13. return $this->sendContentAsJson(array(
  14. 'message' => 'Hello World!'
  15. ));
  16. }
  17. public function dbAction()
  18. {
  19. $queries = $this->request->getQuery('queries', null, 1);
  20. $worlds = array();
  21. for ($i = 0; $i < $queries; ++$i) {
  22. $worlds[] = $this->getRandomWorld();
  23. }
  24. return $this->sendContentAsJson($worlds);
  25. }
  26. public function fortunesAction()
  27. {
  28. $fortunes = $this->getFortunesArray();
  29. $fortunes[] = $this->buildFortune();
  30. $this->response->setHeader("Content-Type", "text/html; charset=utf-8");
  31. $this->view->fortunes = $this->sortFortunes($fortunes);
  32. }
  33. public function updateAction()
  34. {
  35. $queries = $this->request->getQuery('queries', null, 1);
  36. $queries = max(1, min(500, $queries));
  37. $worlds = array();
  38. for ($i = 0; $i < $queries; ++$i) {
  39. $world = $this->getRandomWorld();
  40. $world->randomNumber = mt_rand(1, 10000);
  41. $world->save();
  42. $worlds[] = $world;
  43. }
  44. return $this->sendContentAsJson($worlds);
  45. }
  46. protected function getRandomWorld()
  47. {
  48. return Worlds::findFirst(mt_rand(1, 10000));
  49. }
  50. protected function getFortunesArray()
  51. {
  52. // since the resultset is immutable get an array instead
  53. // so we can add the new fortune
  54. return Fortunes::find()->toArray();
  55. }
  56. protected function buildFortune()
  57. {
  58. return array(
  59. 'id' => 0,
  60. 'message' => 'Additional fortune added at request time.'
  61. );
  62. }
  63. protected function sortFortunes($fortunes)
  64. {
  65. usort($fortunes,
  66. function($left, $right) {
  67. $l = $left['message'];
  68. $r = $right['message'];
  69. if ($l === $r) {
  70. return 0;
  71. } else {
  72. if ($l > $r) {
  73. return 1;
  74. } else {
  75. return -1;
  76. }
  77. }
  78. });
  79. return $fortunes;
  80. }
  81. private function sendContentAsJson($content)
  82. {
  83. $response = new Phalcon\Http\Response(json_encode($content));
  84. $response->setHeader("Content-Type", "application/json");
  85. return $response;
  86. }
  87. }