Mam problem z komponentem zapory Symfony2, biorąc wieki na niektóre żądania.Zapora Symfony2 ma wiek
Zauważyłem, że dzieje się tak głównie podczas żądań AJAX, i bardzo konkretnych - kiedy szukam podmiotu używającego LIKE% ..% stwierdzeń w doktrynie (nie jestem pewien, czy to ma znaczenie, ale to właśnie zauważyłem;)) .
Wywołanie tego samego adresu URL nieco później (1 lub 2 sekundy później) powoduje "normalny" czas przetwarzania zapory.
Nie używam zewnętrznych źródeł danych do uwierzytelniania, wszystko jest przechowywane w PostgreSQL.
Spójrz na poniższy osi czasu:
timeline http://f.cl.ly/items/1a2Y0T062E0H2Z3t0g27/Zrzut%20ekranu%202012-11-19%20o%2018.26.11.png
Czy istnieje sposób debugować zapory bezpośrednio?
Mój config wygląda następująco:
security:
firewalls:
admin_area:
provider: db_users
pattern: ^/admin
anonymous: ~
form_login:
login_path: /admin/login
check_path: /admin/login-check
logout:
path: /admin/logout
target: /admin
switch_user: { role: ROLE_SUPERADMIN, parameter: _become_user }
secured_area:
pattern: ~
anonymous: ~
http_basic:
realm: "Secured Demo Area"
access_control:
- { path: ^/admin/clip-manager/clip/encode/*, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login-check, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: [ROLE_ADMIN_LOGIN, ADMIN_AREA] }
providers:
db_users:
entity: { class: Webility\Bundle\AppUserBundle\Entity\User, property: username }
encoders:
Webility\Bundle\AppUserBundle\Entity\User:
algorithm: sha256
iterations: 3
encode_as_base64: false
acl:
connection: default
Używam Symfony\SecurityBundle
i JMSSecurityExtraBundle
.
Spróbuj użyć rzeczywistego adresu IP (zamiast nazwy hosta) dla serwera bazy danych. http://12wiki.blogspot.com.es/2012/11/why-does-symfony-2-firewall-take-so.html – Cerad
Czy istnieje wiele żądań przetwarzania AJAX w tym samym czasie, czy jest to jedyny? – AlterPHP
Tak, to jedyny. Chociaż ... To wyszukiwanie na żywo, czyli. szukaj jako typy użytkownika (z opóźnieniem wynoszącym 100ms, gdy użytkownik przestał pisać) i wszelkie poprzednie żądania AJAX zostaną przerwane. Ale rzeczywiście może się zdarzyć, że żądania zostaną przerwane, ale są nadal przetwarzane przez serwer. –