BenchController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace Skamander\BenchmarkBundle\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  4. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Skamander\BenchmarkBundle\Entity\Fortune;
  9. class BenchController extends Controller
  10. {
  11. /**
  12. * @Route("/json", name="_json")
  13. */
  14. public function jsonAction()
  15. {
  16. return new JsonResponse(array('message' => 'Hello World!'));
  17. }
  18. /**
  19. * @Route("/db", name="_db")
  20. *
  21. * Used db?queries={queries} instead of db/{queries} to align the test with most of the other tests
  22. */
  23. public function dbAction(Request $request)
  24. {
  25. $queries = $request->query->getInt('queries', 1);
  26. // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php
  27. $worlds = array();
  28. $repo = $this->getDoctrine()
  29. ->getRepository('SkamanderBenchmarkBundle:World');
  30. for($i = 0; $i < $queries; ++$i) {
  31. $worlds[] = $repo->find(mt_rand(1, 10000));
  32. }
  33. return new JsonResponse($worlds);
  34. }
  35. /**
  36. * @Route("/fortunes", name="_fortunes")
  37. * @Template
  38. */
  39. public function fortunesAction()
  40. {
  41. $repo = $this->getDoctrine()
  42. ->getRepository('SkamanderBenchmarkBundle:Fortune');
  43. $fortunes = $repo->findAll();
  44. $runtimeFortune = new Fortune();
  45. $runtimeFortune->setId(0)
  46. ->setMessage('Additional fortune added at request time.');
  47. $fortunes[] = $runtimeFortune;
  48. usort($fortunes, function($left, $right) {
  49. if ($left->message === $right->message) {
  50. return 0;
  51. } else if ($left->message > $right->message) {
  52. return 1;
  53. } else {
  54. return -1;
  55. }
  56. });
  57. return ['fortunes' => $fortunes];
  58. }
  59. }