首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2防火墙需要很长时间

Symfony2防火墙需要很长时间
EN

Stack Overflow用户
提问于 2012-11-20 01:37:59
回答 3查看 4.6K关注 0票数 7

我有一个关于Symfony2防火墙组件的问题,在一些请求上花费了很长时间。

我注意到,它主要发生在AJAX请求期间,而且是非常具体的请求-当我在doctrine中使用Like%..%语句搜索实体时(我不确定它是否重要,但这就是我注意到的;)。

稍晚调用相同的URL (1或2秒后)会导致“正常”的防火墙处理时间。

我没有使用任何外部数据源进行身份验证,所有内容都存储在PostgreSQL中。

看看下面的时间线:

有没有办法直接调试防火墙?

我的配置如下所示:

代码语言:javascript
复制
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

我使用的是Symfony\SecurityBundleJMSSecurityExtraBundle

EN

回答 3

Stack Overflow用户

发布于 2016-11-16 03:28:45

我也遇到了同样的问题,想和你们分享一下解决方案。

由Symfony\Component\Security\Http\Firewall引起的问题约107406毫秒

解决方案;

在我们的例子中,问题是我们在php.ini文件上使用的会话处理程序。

之前的配置;

代码语言:javascript
复制
session.save_handler = files

新配置;

代码语言:javascript
复制
;session.save_handler = files

session.save_handler = memcached
session.save_path = "127.0.0.1:11212"

我将会话处理程序更改为memcached。因为我已经在使用memcached了,所以我需要memcached的第二个实例,或者我实现了memcached监听的额外端口,解决了这个问题;

要运行memcached监听两个端口,我编辑了memcached.conf

之前的配置;

代码语言:javascript
复制
-p 11211
-l 127.0.0.1

新配置

代码语言:javascript
复制
#-p 11211
#-l 127.0.0.1

-l 127.0.0.1:11211
-l 127.0.0.1:11212

并且刚刚重启memcached实例,memcached就开始侦听同一实例上的两个端口。

代码语言:javascript
复制
service memcached restart

要验证memcached在新端口上的侦听和响应,可以运行telnet命令;

代码语言:javascript
复制
telnet 127.0.0.1 11211
telnet 127.0.0.1 11212

期望输出为;

代码语言:javascript
复制
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

其结果是应用速度非常快;

我希望这个解决方案能对你有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2012-11-20 05:13:05

这是相当不寻常的行为(除非你正在做某事,嗯.不同寻常;)。

尝试使用PHP分析器来查看发生了什么。我可以推荐带有XHProf GUIXHProf。它很容易设置和使用。

我只是猜测,但问题可能与您提到的数据库查询有关。检查查询中使用的字段是否设置了适当的索引。

编辑:我偶然发现了这篇文章,链接自Symfony博客:http://12wiki.blogspot.com.es/2012/11/why-does-symfony-2-firewall-take-so.html

这似乎是一个DNS问题。

票数 2
EN

Stack Overflow用户

发布于 2014-04-22 03:31:38

尝试使用不同的会话处理程序。我的Vagrant邮箱里也有同样的问题。不知道是什么原因造成的。详情请参见http://ctors.net/2014/04/21/symfony_slow_in_vagrant

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13459157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档