Я работаю над системой разрешений. На каждой странице необходимо будет проверить, имеет ли пользователь разрешение на это. У меня есть два варианта: хранить данные в переменной сеанса (которая обновляется только во время входа в систему) или каждый раз запрашивать базу данных. Что быстрее?
Я понял, что если изменение будет изменено, мне нужно будет обновить переменную сеанса, поэтому пользователь должен пересмотреть «видеть» изменения в разрешении, но это не является фактором в решении, только скорость.
Скорость SESSION и DB зависит от ряда факторов:
Я могу сказать, что для небольших объемов данных переменные сеанса на основе файлов будут быстрее, чем доступ к БД.
Вы должны измерить его, чтобы получить соответствующее сравнение между двумя методами в вашем приложении. Я лично сомневаюсь, что это будет иметь такое значение, чтобы не пойти на решение сеанса.
Установите новое значение в сеансе :
Время: 0,00062895 секунд
Вставьте то же значение в базу данных :
Время: 0.00000811 секунд
Вставьте то же значение в файлы cookie
Время: 0.00000906 секунд
Или вы можете протестировать, используя этот код:
$before = microtime(true); // Put your code here $after = microtime(true); $Speed = number_format(( $after - $before), 8); echo "<h1>Time: " . $Speed . " Seconds</h1>";
Я бы сохранил такую информацию в сеансе:
Я также хотел бы добавить, что если в один прекрасный день вы начнете иметь несколько различных веб-серверов, вы сможете хранить данные сеанса с помощью memcached, что означает, что он масштабируется лучше, чем база данных.
Короткий ответ: сохранение его в переменной сеанса, вероятно, немного быстрее, поскольку вы уже заполнили его из базы данных. При этом я сомневаюсь, что скорость одного простого запроса базы данных приведет вас к чему-то реальному измеримому.