Доброе время суток!
Вопрос - можно ли зная session_id(), созданной на одном компьютере (браузере), получить по нему данные на другом компьютере (браузере)?
Stackoverflow сказал, что можно, но вот мучаюсь-мучаюсь и никак не получается
Отправлено 08 мая 2014 - 19:29
Ну тогда просто сериализуй данные сессии и сохраняй в БД.
А без БД никак? (опять же, по session_id())
Т.е. использовать по минимуму. Проблема в том, что если писать в БД обновление каждый раз, как обновляется сессия, то получается очень много запросов. Как раз этого и хотелось избежать...
Отправлено 08 мая 2014 - 19:31
Грубо говоря, да. Нужно чтобы кое-какие данные из сессии сохранялись для пользователя независимо от того, за каким он компьютером или браузером.
Я ни кого и ни чего не жду, поговорим после смерти.
Отправлено 08 мая 2014 - 19:40
А без БД никак? (опять же, по session_id())
Т.е. использовать по минимуму. Проблема в том, что если писать в БД обновление каждый раз, как обновляется сессия, то получается очень много запросов. Как раз этого и хотелось избежать...
ну можно в файлах хранить
для БД это не много
Сообщение изменено: skill-A (08 мая 2014 - 19:40 )
летела жизнь в плохом автомобиле и вылетала с выхлопом в трубу
Отправлено 08 мая 2014 - 19:41
А без БД никак? (опять же, по session_id())
Т.е. использовать по минимуму. Проблема в том, что если писать в БД обновление каждый раз, как обновляется сессия, то получается очень много запросов. Как раз этого и хотелось избежать...
Нет, никак.
Да и запросы там простые будут, если (!) организуешь всё грамотно. Там нет тяжёлых запросов в базу.
В другой сессионной переменной сохраняй таймштампу обновления записи в базе.
И тогда у тебя будет типо такого: SELECT COUNT(*) FROM sessions WHERE updated_at = <timestamp> AND user = <user_id
Если вернет 1 - значит сессия активна. Если нет - делаешь запрос 2, которая сольёт данные с БД, запишет данные в сессию и обновит вторую сессионную переменную с новой таймштампой.
А вообще - всё это ПОЛНАЯ ахинея. Подними Redis (http://redis.io/) и работай с ней как с key-value хранилищем, где ключ - это ID твоего пользователя.
Сообщение изменено: Akhenaton (08 мая 2014 - 19:47 )
Вначале делаю, потом думаю