Что будет эффективнее (быстрее) работать на сайте session_start() или брать с бд массивом интересующие значения имея только $_SESSION['name']?

При регистрации я каждому пользователю назначаю сесию:
$_SESSION['login']=$myrow['login'];
 $_SESSION['id']=$myrow['id'];
 $_SESSION['name']=$myrow['name'];
 $_SESSION['age']=$myrow['age'];
 $_SESSION['city']=$myrow['city'];
 $_SESSION['avatar']=$myrow['avatar'];

Не будет ли этот большой список сесий у каждого пользователя нагружать сайт ведь я могу сохранить только $_SESSION['name']=$myrow['name']
чтобы потом использовать его как:
include("bd.php");
 session_start();
$ww=$_SESSION['name'];
 $rs = mysql_query("SELECT * FROM `users` WHERE `name`='$ww' ");
$rt = mysql_fetch_array($rs);
{
 $rey=$rt['rey'];
 $avatar=$rt['avatar'];
...}

У меня просто много таких файлов где просят инфу о пользователе мне лучше брать из сесии или иметь сесию только на имя чтобы взять остальные данные из бд? Какой вариант будет лучше если пользователей будет много.
  • Вопрос задан
  • 5602 просмотра
Решения вопроса 1
aleksejjjj
@aleksejjjj
Вы занимаетесь преждевременной оптимизацией и скорее всего даже не там где она нужна. Например mysql_query давно устарел, используйте PDO или в крайнем случае mysqli.

Разница в производительности будет минимальной, но я бы рекомендовал использовать в сессии только Id.

1. Например впоследствии вы сможете совсем отказаться от сессий и использовать какой-то токен для получения пользователя из БД и работы rest API.
2. Удалили вы злобного спамера из БД, а сессия у него всё ещё валидна и вы ничего с ней не сделаете, если отдельно не храните в БД id сессии. Т.е. при каждом запросе вам всё равно нужно сходить в базу и убедиться что пользователь не заблокирован.

Так что все ваши попытки сэкономить 2мс выльются в кривую нерасширяемую архитектуру и большие проблемы в будущем. Вы просто ещё не доросли до highload, вам рано задумываться о такого рода оптимизациях. А конкретно ваше предложение это вообще не оптимизация.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@smple
чтобы взять $_SESSION['name'] надо стартануть сессию :)
Ответ написан
@Lukentui
Vue.JS | Express.JS | Laravel | Python
По факту(при вашем уровне знаний), можно сказать, что БД будет всегда медленнее всего.
Ибо это: подключение к БД(ожидание подключения), отправка запроса(ожидание выполнения команды).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.
22 сент. 2019, в 12:35
600 руб./за проект
22 сент. 2019, в 12:15
12000 руб./за проект