BenchController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. class BenchController extends \Phalcon\Mvc\Controller
  3. {
  4. public function initialize()
  5. {
  6. // views must be renderd explicitly. safes processing time when not needed.
  7. $this->view->disable();
  8. }
  9. public function jsonAction() {
  10. return $this->sendContentAsJson(array(
  11. 'message' => 'Hello World!'
  12. ));
  13. }
  14. public function dbAction() {
  15. $queries = $this->getQueryOrDefault('queries', 1);
  16. $worlds = array();
  17. for ($i = 0; $i < $queries; ++$i) {
  18. $worlds[] = Worlds::findFirst(mt_rand(1, 10000));
  19. }
  20. return $this->sendContentAsJson($worlds);
  21. }
  22. public function fortunesAction() {
  23. // since the resultset is immutable get an array instead
  24. // so we can add the new fortune
  25. $fortunes = Fortunes::find()->toArray();
  26. $fortunes[] = array(
  27. 'id' => 0,
  28. 'message' => 'Additional fortune added at request time.'
  29. );
  30. usort($fortunes, function($left, $right) {
  31. if ($left['message'] === $right['message']) {
  32. return 0;
  33. } else if ($left['message'] > $right['message']) {
  34. return 1;
  35. } else {
  36. return -1;
  37. }
  38. });
  39. return $this->sendContentAsText(
  40. $this->view->getRender('bench', 'fortunes', array(
  41. 'fortunes' => $fortunes
  42. ))
  43. );
  44. }
  45. private function getQueryOrDefault($query, $default) {
  46. return $this->request->getQuery($query) !== null
  47. ? $this->request->getQuery($query)
  48. : $default;
  49. }
  50. private function sendContentAsText($content) {
  51. $response = new Phalcon\Http\Response();
  52. $response->setStatusCode(200, "OK");
  53. $response->setHeader("Content-Type", "text/html; charset=utf-8");
  54. $response->setContent($content);
  55. return $response;
  56. }
  57. private function sendContentAsJson($content) {
  58. $response = new Phalcon\Http\Response();
  59. $response->setStatusCode(200, "OK");
  60. $response->setHeader("Content-Type", "application/json");
  61. $response->setContent(json_encode($content));
  62. return $response;
  63. }
  64. }