Перейти к содержимому

Фото
- - - - -

PHP Session - между компьютерами


  • Вы не можете создать новую тему
  • Please log in to reply
8 ответов в этой теме

#1 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 08 мая 2014 - 18:32

Доброе время суток!

 

Вопрос - можно ли зная session_id(), созданной на одном компьютере (браузере), получить по нему данные на другом компьютере (браузере)?

Stackoverflow сказал, что можно, но вот мучаюсь-мучаюсь и никак не получается :(


  • 0

#2 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 08 мая 2014 - 19:01

Ты хочешь сессию сохранять чтоли? 


  • 0

Вначале делаю, потом думаю :)


#3 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 08 мая 2014 - 19:10

Ты хочешь сессию сохранять чтоли? 

Грубо говоря, да. Нужно чтобы кое-какие данные из сессии сохранялись для пользователя независимо от того, за каким он компьютером или браузером.


  • 0

#4 skill-AB

skill-AB

    Huge Cojones

  • Постоялец
  • 9 702 сообщений

Отправлено 08 мая 2014 - 19:15

ну дык тогда придется и входить на разных компьютерах, догоняешь, да?


  • 0

летела жизнь в плохом автомобиле и вылетала с выхлопом в трубу


#5 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 08 мая 2014 - 19:15

Ну тогда просто сериализуй данные сессии и сохраняй в БД. 


  • 0

Вначале делаю, потом думаю :)


#6 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 08 мая 2014 - 19:29

Ну тогда просто сериализуй данные сессии и сохраняй в БД. 

 

А без БД никак? (опять же, по session_id())

Т.е. использовать по минимуму. Проблема в том, что если писать в БД обновление каждый раз, как обновляется сессия, то получается очень много запросов. Как раз этого и хотелось избежать...


  • 0

#7 Нео Жиданно

Нео Жиданно

    Воспитан стервами, попробуй удиви.

  • Постоялец
  • 1 838 сообщений
  • Откуда:Вернулся из рая.

Отправлено 08 мая 2014 - 19:31

 

Грубо говоря, да. Нужно чтобы кое-какие данные из сессии сохранялись для пользователя независимо от того, за каким он компьютером или браузером.

 
независимо от того, за каким он компьютером или браузером
name="simonsays" post="4149384" timestamp="1399569024"
  • 0

Я ни кого и ни чего не жду, поговорим после смерти.


#8 skill-AB

skill-AB

    Huge Cojones

  • Постоялец
  • 9 702 сообщений

Отправлено 08 мая 2014 - 19:40

А без БД никак? (опять же, по session_id())

Т.е. использовать по минимуму. Проблема в том, что если писать в БД обновление каждый раз, как обновляется сессия, то получается очень много запросов. Как раз этого и хотелось избежать...

ну можно в файлах хранить 

 

для БД это не много


Сообщение изменено: skill-A (08 мая 2014 - 19:40 )

  • 0

летела жизнь в плохом автомобиле и вылетала с выхлопом в трубу


#9 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 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 )

  • 0

Вначале делаю, потом думаю :)