Миллион файлов

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Все так бросились набрасывать идеи на вентилятор, что диву даешься.
Сначала считаем: миллион по 500 байт = 500 мегабайт. Какая база? Может, вы и сессии тоже в базе храните? С фотками. Если да - вы ошиблись веком.

Писать/читать 500 байт из 500 метров по ключу - редис. А суп - ложкой.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@grigori, не редис, а хэндлер-сокет, чтоб уж совсем кошерно-извратно)
 

fixxxer

К.О.
Партнер клуба
handlersocket сдох, к сожалению.

Если в оперативку все не влезает, можно какой-нибудь там tarantool взять, вроде последние версии умеют в диск.
 

Фанат

oncle terrible
Команда форума
Не знаю как сейчас, но Баду очень настаивала в свое время на хранеии сессий именно в БД.
 

Adelf

Administrator
Команда форума
Я думаю они настаивали на том чтобы не хранить их в файлах. Что в случае Баду - очевидно. А так... Да. Хранят в мемкешах, редисах...
 

Фанат

oncle terrible
Команда форума
Я думаю они настаивали на том чтобы не хранить их в файлах. Что в случае Баду - очевидно. А так... Да. Хранят в мемкешах
Спасибо, собеседование вы не прошли!
Это отдельный пунктик Фишера, и его понять можно. Мемкеш - это сервис гарантированной потери данных, хранить что-либо в нем принципиально невозможно.
Ну а редиса во времена мамбы еще не было, и имеющееся работающее решение менять на новое думаю смысла немного.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Мемкеш - это сервис гарантированной потери данных, хранить что-либо в нем принципиально невозможно.
Ну да, действительно, кто ж сессионные данные то хранит в неперсистентном хранилище.
 

Adelf

Administrator
Команда форума
У нас были сессии в мемкеше. И там не было ничего такого что было бы страшно потерять. Я вообще дцмаю что хранить в сессии чтото важное - моветон

И да. Собеседование Фишеру я действительно не прошел. примерно 9 лет назад.
 

Фанат

oncle terrible
Команда форума
Фишер более не работает в *****.
Ну, не так много времени с тех про прошло, да и не вмешивался он мне кажется в последнее время в вопросы такого уровня.

В любом случае, лично мне интересно было бы посмотреть на аргументацию по замене проверенного работающего решения на новое.
 

fixxxer

К.О.
Партнер клуба
В баду сессии были в мемкеше. По крайней мере, 10 лет назад.
 

fixxxer

К.О.
Партнер клуба
Я думаю они настаивали на том чтобы не хранить их в файлах.
Именно так и было. В те времена откуда-то (кажется, из каких-то док по масштабированию битрикса) разошлась бредовая идея хранить сессии в файлах на nfs, отсюда и вопрос возник.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
У меня сессии в мемкеше. Сессии - механизм движка PHP для хранения данных между вызовами отдельного пользователя.
У меня это только авторизация пользователей по кукам.
Причем, на этой неделе я начал переписывать аутентификацию и авторизацию, чтобы регать пользователей без паролей, а идентификатором будет любой из десятка видов.
И тут оказалось, что сессии совершенно бесполезны. Гораздо лучше токены авторизации хранить в редисе безо всяких сессий, и выдавать их по результату аутентификации.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Для тех, кто не понял о чем я: регать юзеров я буду через соцсети, по номеру телефона и так далее, "привязать" можно сколько угодно email, телефонов и соц сетей. Токен авторизации - раньше это было значение куки PHPSESSID, будет храниться месяцами в редисе и в браузере. Зайти с нового браузера надо с подтверждением по мылу или через соц сеть, потом вход будет несколько месяцев без подтверждения. Финансовой информации у меня нет, пароли не нужны.

Решается куча вопросов - например, объединение аккаунтов пользователей.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@флоппик, спасибо, любопытная штука
архитектурно вижу так: чтобы сделать отзыв токена, надо создавать черный список, следовательно, на уровне реализации нет разницы - делать черный или белый список, все-равно список делать, и GET к редису при каждом запросе выполнять

преимуществ JWT для стандартного сайта сходу не вижу, подскажите, если они есть
 

Вурдалак

Продвинутый новичок
Для тех, кто не понял о чем я: регать юзеров я буду через соцсети, по номеру телефона и так далее, "привязать" можно сколько угодно email, телефонов и соц сетей. Токен авторизации - раньше это было значение куки PHPSESSID, будет храниться месяцами в редисе и в браузере. Зайти с нового браузера надо с подтверждением по мылу или через соц сеть, потом вход будет несколько месяцев без подтверждения. Финансовой информации у меня нет, пароли не нужны.

Решается куча вопросов - например, объединение аккаунтов пользователей.
У нас также, сессии нафиг не нужны, но токен всё-таки должен иметь свой expiration date. А вот какой-нибудь device_id должен храниться бесконечно. Тогда появляются всякие фишки типа «вы зашли с нового устройства» и т.д.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
насчет device_id у меня есть мысль хранить идентификаторы браузера, как в https://panopticlick.eff.org/ - но такое может быть не очень GDPR complaint
чтобы пользователей с неуникальными браузерами помечать для внимания при модерации
 
Сверху