代码之家  ›  专栏  ›  技术社区  ›  Darkerstar

科哈纳控制器设置异常缓慢

  •  1
  • Darkerstar  · 技术社区  · 15 年前

    我是一个相当有经验的php开发人员,是科哈纳的新手。

    我已经用kohana建立了一个网站,但是在我上传到我的服务器后,我发现部分“控制器设置”异常缓慢,占用了12秒,而其他的不到0.5秒,

    Kohana Loading  0.014   1   0.49MB
    Environment Setup   0.004   1   0.05MB
    System Initialization   0.007   1   0.14MB
    Controller Setup    12.058  1   1.42MB
    ReflectionClass >newInstance()  12.054  1   1.35MB
    Controller Execution    0.036   1   0.25MB
    Total Execution 12.117  1   2.30MB
    

    通过深入kohana核心,我发现reflectionclass>newInstance()导致了这个问题

    但我不知道我该从这里去哪里。:(

    请帮忙。谢谢你


    我已经深入研究了自己的代码,看起来是它的session::instance()引起了这个问题。 会话::实例()12.032 1.03MB


    除了跟踪问题之外,我还将会话驱动程序更改为cache,将cache更改为memcache。但没有太大的进步。所以我打开session.php,找到了这个。

         /**
         * Singleton instance of Session.
         */
        public static function instance()
        {
            if (Session::$instance == NULL)
            {
                // Create a new instance
                new Session;
            }
    
            return Session::$instance;
        }
    

    ->“新会话;”!!

    我看不出这有什么意义。我看了其他的类,那里写的是return new xxx;

    1 回复  |  直到 15 年前
        1
  •  0
  •   Gordon Haim Evgi    15 年前

    正如在docblock中所说,session类使用 Singleton pattern . singleton模式确保在任何给定时间只有一个类实例。你显示的代码没有什么特别之处。这是模式的标准实现。我非常怀疑这是罪魁祸首。如果有的话,你得进去看看 Session::__construct .

    更好的方法是 Xdebug 分析应用程序并获取 detailed listing of the execution flow . 这将使我们更清楚地认识到什么是需要这么长时间的。