Большая нагрузка на базу данных при использовании класса CodeIgniter Session? - PullRequest
1 голос
/ 19 апреля 2011

После прочтения о том, как CodeIgniter обрабатывает сеансы, меня беспокоит влияние на производительность при настройке сеансов для сохранения и извлечения из базы данных.

Это из документации CI: «Когда данные сеансадоступный в базе данных, каждый раз, когда в куки пользователя обнаруживается действительный сеанс, выполняется запрос к базе данных, чтобы соответствовать ему. "

То есть каждый вызов AJAX, каждый фрагмент HTML, который я запрашиваю, будет иметь эти издержки?Это потенциально огромная проблема для систем, которые пытаются масштабировать!

Я бы догадался, что CI реализовал бы это лучше: включил хеш MD5 для покрытия обоих идентификаторов сессии + время при кодировании их в записи сеанса,Затем проверяйте базу данных на предмет записи сеанса каждые X минут всякий раз, когда идентификатор сеанса восстанавливается.Я что-то упустил?

1 Ответ

0 голосов
/ 19 апреля 2011

Вы можете сделать так, чтобы ваши AJAX-запросы использовали другой контроллер, например, Ajax_Controller вместо MY_Controller.MY_Controller будет загружать класс Session, а Ajax_Controller - нет.Таким образом, когда вы вызываете свой AJAX, он не затрагивает данные сеанса и, следовательно, не делает ошибочных вызовов в базу данных, которые не нужны.

Если вы автоматически загружаете класс Session, возможно, выможно попробовать выгрузить его для запросов AJAX?Я никогда не пробовал, но здесь говорится о http://codeigniter.com/forums/viewthread/65191/#320552, а затем сделать что-то вроде

if ($ this-> input-> is_ajax_request ()) {// выгрузка кода класса сеанса идетздесь}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...