Настройка контроллера Kohana неожиданно медленная - PullRequest
1 голос
/ 03 марта 2010

Я довольно опытный разработчик PHP, новичок в kohana.

Я создал веб-сайт с помощью 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 (), который вызывает проблему. Session :: instance () 12,032 1 1,03 МБ


В дополнение к отслеживанию проблем я изменил драйвер сеанса на кеш, а кеш на 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 Ответ

0 голосов
/ 03 марта 2010

Как сказано в DocBlock, класс Session использует шаблон Singleton . Шаблон Singleton гарантирует, что в любой момент времени существует только один экземпляр класса. Код, который вы показываете, не делает ничего особенного. Это стандартная реализация шаблона. Я очень сомневаюсь, что это виновник. Если таковые имеются, вам придется искать в Session::__construct.

Лучше было бы использовать Xdebug для профилирования приложения и получения подробного списка потока выполнения . Это позволит пролить гораздо больше света на то, что занимает так много времени.

...