BenchController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. return $this->sendContentAsJson(array(
  13. 'message' => 'Hello, World!'
  14. ));
  15. }
  16. public function dbAction() {
  17. $queries = $this->request->getQuery('queries', null, 1);
  18. $worlds = array();
  19. for ($i = 0; $i < $queries; ++$i) {
  20. $worlds[] = Worlds::findFirst(mt_rand(1, 10000));
  21. }
  22. if (count($worlds) == 1) {
  23. return $this->sendContentAsJson($worlds[0]);
  24. }
  25. else {
  26. return $this->sendContentAsJson($worlds);
  27. }
  28. }
  29. public function fortunesAction() {
  30. // since the resultset is immutable get an array instead
  31. // so we can add the new fortune
  32. $fortunes = Fortunes::find()->toArray();
  33. $fortunes[] = array(
  34. 'id' => 0,
  35. 'message' => 'Additional fortune added at request time.'
  36. );
  37. usort($fortunes, function($left, $right) {
  38. $l = $left['message'];
  39. $r = $right['message'];
  40. if ($l === $r) {
  41. return 0;
  42. } else {
  43. if ($l > $r) {
  44. return 1;
  45. } else {
  46. return -1;
  47. }
  48. }
  49. });
  50. $this->response->setHeader("Content-Type", "text/html; charset=utf-8");
  51. $this->view->fortunes = $fortunes;
  52. }
  53. public function updateAction() {
  54. $queries = $this->request->getQuery('queries', null, 1);
  55. if($queries < 1) {
  56. $queries = 1;
  57. } else if ($queries > 500) {
  58. $queries = 500;
  59. }
  60. $worlds = array();
  61. for ($i = 0; $i < $queries; ++$i) {
  62. $world = Worlds::findFirst(mt_rand(1, 10000));
  63. $world->randomNumber = mt_rand(1, 10000);
  64. $world->save();
  65. $worlds[] = $world;
  66. }
  67. return $this->sendContentAsJson($worlds);
  68. }
  69. public function plaintextAction()
  70. {
  71. $this->view->disable();
  72. $this->response->setStatusCode(200, "OK");
  73. $this->response->setContentType('text/plain', 'UTF-8');
  74. $this->response->setContent("Hello, World!");
  75. $this->response->send();
  76. }
  77. private function sendContentAsJson($content) {
  78. $response = new Phalcon\Http\Response(json_encode($content));
  79. $response->setHeader("Content-Type", "application/json");
  80. return $response;
  81. }
  82. }