Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][Symofny2]Długi czas oczekiwania na zwrot odpowiedzi
Forum PHP.pl > Forum > Przedszkole
amii
Mam taki problem, że wysyłam żądania poprzez ajax a czas odpowiedzi 20 - 50 sek. co raczej nie jest normalne. Właściwie to chodzi mi o namierzenie przyczyny tego stanu rzeczy.
Najdziwniejsze jest to, że jeśli generuje te żądania w niewielkim odstępie czasowym to strony są wczytywane w czasie ok. 1 sek.
Opiszę to dokładniej:
Wysłanie żądanie z poziomu JS
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. url : '{{path("ajax_pokazprawypanel_adresyip")}}',
  3. type: 'POST',
  4. dataType: 'json',
  5. data : {
  6. 'klasaadresowa' : $(this).html()
  7. },
  8. cache : true,
  9. success : function(data) {
  10. $('.loader-kontener').hide();
  11. $('.tresc-prawy-boks-wewnatrz .box').html('');
  12. $('.tresc-prawy-boks-wewnatrz .box').hide();
  13. $( "form[name='klasyadresowe']" ).hide();
  14. var cc = 0;
  15. for (c in data["content"]) {
  16. if (cc < 64) $('.tresc-prawy-boks-wewnatrz .box1').append(data["content"][c]);
  17. else if (cc >= 64 && cc < 128) $('.tresc-prawy-boks-wewnatrz .box2').append(data["content"][c]);
  18. else if (cc >= 128 && cc < 192) $('.tresc-prawy-boks-wewnatrz .box3').append(data["content"][c]);
  19. else if (cc >= 192) $('.tresc-prawy-boks-wewnatrz .box4').append(data["content"][c]);
  20. ++cc;
  21. }
  22. $('.tresc-prawy-boks-wewnatrz .box').show(800);
  23. $('#zapisz-dns-identyfikator').show();
  24. if (data.hasOwnProperty("feedback")) {
  25. $("#flash-messanger").removeClass();
  26. $("#flash-messanger").addClass(data.feedback.class).html(data.feedback.message);
  27. flashMessage();
  28. }
  29. },
[JAVASCRIPT] pobierz, plaintext


Skrypt obsługujący ajax w kontrolerze, tutaj kombinowałem z cache - ale nie jestem pewien czy to dobrze robię:
  1. public function klienciAdresyipAction()
  2. {
  3. $response = new JsonResponse();
  4. $request = $this->container->get('request');
  5. $klasaadresowa = $request->request->get('klasaadresowa');
  6.  
  7. $repository = $this->getDoctrine()->getRepository('MyBundleCMSBundle:Klienci');
  8. $k = $repository->findAll();
  9.  
  10. $arr = array();
  11.  
  12. $repository = $this->getDoctrine()->getRepository('MyBundleCMSBundle:KlasyAdresowe');
  13. $aip = $repository->findOneByKlasa($klasaadresowa);
  14.  
  15. $adresyip = $aip->getAdresyip();
  16.  
  17. if (count($adresyip) > 0) {
  18. $i = 0;
  19. foreach ($adresyip as $ip) {
  20. $f = array();
  21. $f .= '<option value=""></option>';
  22. foreach ($k as $klient) {
  23. if (is_object($ip->getKlienci()) && $klient->getId() == $ip->getKlienci()->getId()) $f .= '<option value="'.$klient->getId().'" selected>'.$klient->getNazwa().'</option>';
  24. else $f .= '<option value="'.$klient->getId().'">'.$klient->getNazwa().'</option>';
  25. }
  26.  
  27. $revdns = $ip->getDns();
  28. $arr[] = array ('<div class="wybierz-klienta-kontener"><input type="hidden" name="revdns[]" value="'.$revdns.'"><input type="hidden" name="adres[]" value="'.$ip->getAdres().'"><input type="hidden" name="klasaadresowa[]" value="'.$klasaadresowa.'"><table><tr><td><label class="adres-ip" for="select-'.$i.'">'. $ip->getAdres() .'</label></td><td><select name="wybierz-klienta[]" id="select-'.$i.'" class="wybierz-klienta">'. $f . '</select></td><td><div title="'.$revdns.'" class="revdns">'.$revdns.'</div></td></tr></table></div>' );
  29. ++$i;
  30. ///<input name="maska[]" class="maska" type="text" size="1" value="">
  31. }
  32. $final['content'] = $arr;
  33. }
  34.  
  35. else {
  36. $f = array();
  37. $f .= '<option value=""></option>';
  38. foreach ($k as $klient) {
  39. if ($klient->getNazwa() == 'Iwacom') $f .= '<option value="'.$klient->getId().'" selected>'.$klient->getNazwa().'</option>';
  40. else $f .= '<option value="'.$klient->getId().'">'.$klient->getNazwa().'</option>';
  41. }
  42.  
  43. for ($i = 0; $i < 256; $i++) {
  44. $revdns = gethostbyaddr($klasaadresowa.'.'.$i);
  45. $arr[] = array ('<div class="wybierz-klienta-kontener"><input type="hidden" name="revdns[]" value="'.$revdns.'"><input type="hidden" name="adres[]" value="'.$klasaadresowa.'.'.$i.'"><input type="hidden" name="klasaadresowa[]" value="'.$klasaadresowa.'"><table><tr><td><label class="adres-ip" for="select-'.$i.'">'. $klasaadresowa.'.'.$i .'</label></td><td><select name="wybierz-klienta[]" id="select-'.$i.'" class="wybierz-klienta">'. $f . '</select></td><td><div title="'.$revdns.'" class="revdns">'.$revdns.'</div></td></tr></table></div>' );
  46. }
  47. $final['content'] = $arr;
  48. }
  49.  
  50. $response->setData($final);
  51. $response->setPublic();
  52. $response->setMaxAge(24*60*3600); //1 day
  53. $response->setClientTtl(24*60*3600); //1 day
  54. $response->headers->addCacheControlDirective('must-revalidate', true);
  55. return $response;
  56. }
pedro84
Zaraz, 20 sekund czeka na odpowiedź z kontrolera?

PS. Weź popraw te spaghetti, bo oczy krwawią sad.gif
amii
Tak taki jest czas odpowiedzi na akcję kontrolera tą widoczną u góry.
Kod jest taki bo nie wiem jak zwrócić z ajaxa cały formularz
skowron-line
Cytat(amii @ 25.07.2014, 13:36:06 ) *
Kod jest taki bo nie wiem jak zwrócić z ajaxa cały formularz

http://symfony.com/doc/current/cookbook/fo...submitted-forms
by_ikar
Czy ten problem objawia się na localu czy gdzieś na serwerze zdalnym? (jeżeli na localu, to jeszcze powiedz czy masz windowsa 8).
amii
Prawdopodobnie to mogła być kwestia braku zainstalowanego APC accelarator, po instalacji działa wyrażnie szybciej, aczkolwiek jeszcze wybadam sprawę dokładniej bo sam jestem tego ciekawy.
Serwer to zdalan maszyna z Debianem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.