Что будет эффективнее (быстрее) работать на сайте 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'];
...}

У меня просто много таких файлов где просят инфу о пользователе мне лучше брать из сесии или иметь сесию только на имя чтобы взять остальные данные из бд? Какой вариант будет лучше если пользователей будет много.
  • Вопрос задан
  • 5605 просмотров
Решения вопроса 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 | Flask | Fasthttp
По факту(при вашем уровне знаний), можно сказать, что БД будет всегда медленнее всего.
Ибо это: подключение к БД(ожидание подключения), отправка запроса(ожидание выполнения команды).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
30 мая 2020, в 11:43
1000 руб./за проект
30 мая 2020, в 10:25
5000 руб./за проект
30 мая 2020, в 09:57
500 руб./в час