Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Вопрос про session.gc_maxlifetime (https://javascript.ru/forum/server/14271-vopros-pro-session-gc_maxlifetime.html)

prog90 09.01.2011 12:47

Вопрос про session.gc_maxlifetime
 
Подскажите, что значит опция конигурации session.gc_maxlifetime на сервере apache? Через сколько будет удален файл сессии, после последней отправки клиентом куки с номером сессии? Или через сколько она будет удалена, после создания, независимо от общения с клиентом?

Gvozd 09.01.2011 12:58

Цитата:

Сообщение от prog90
session.gc_maxlifetime на сервере apache?

на apache нету такой опции

после последнего доступа к файлу сессии

prog90 09.01.2011 13:43

дада. интерпретатор php. оговорился

prog90 09.01.2011 13:50

А для кого эта опция выставляется? для всех и на все время? Например, если вызвать открыть сессию и вызвать ini_set, то для этой сессии опция изменится? или после окончания работы скрипта, опция опять восстановится?
Там где я пишу, она восстанавливается на 1440.

Gvozd 09.01.2011 17:30

вы справку пробовали читать?
там же русским английским по-белому написано, что время задается для конкретного хранилища

x-yuri 09.01.2011 21:21

prog90, давай ты начнешь с того, что обозначишь проблему ;)

prog90 09.01.2011 22:24

А то что это написано в файле php.ini - из этого не понять к кому и как это принимается.
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

Получается что для всех.

И что значит хранилище?

А проблема в том, что мне надо, чтобы при закрытии окна браузера на сервере уничтожалась сессия. Через событие onunload отправить на сервер сигнал не вроде не получится, потому что оно не работает во всех браузерах полностью.
Но еще наверно можно установить время жизни сессии при отсутствии обращения к ней, например, в течение 7 секунд. В чате окно обновляется каждые несколько секунд. Поэтому если закроют браузер или вкладку, то перестанут обращаться к скрипту.
Может быть есть еще вариант как это сделать.

Gvozd 09.01.2011 22:42

выставьте время жизни кукам в 0
при закрытии вкладки они будут удалены

prog90 09.01.2011 23:07

Проблема в том, что если браузер закрыт, и файл куки с сессией унитожен, а сессия на сервере остается, то когда тот же пользователь заходит заново, и ему выдается другая сессия, то получается, что в чате еще есть ктото с его логином и паролем. И ему приходится вывести ошибку - пользователь с таким логином уже в чате.
А если это не считать за ошибку, то тогда один пользователь сможет зайти два раза под своим логином. Или три. И например как мне кажется может поставить генератор, и зайти 1000 раз подряд, и испортить чат.

Gvozd 09.01.2011 23:12

что за бред?
ты разве для того чтобы определить кто в чате "On-line", перебираешь все файлы сессий, что ли?

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

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

prog90 09.01.2011 23:58

блин, у меня именно так и сделано - в таблице рядом с логином стоит время последней активности и показатель 1 или 0.
Он заходит с другой сессии, в другом браузере, и пытается залогиниться, и оказывается что такое логин еще активен и его не пускают. тогда как войти прямо в чат он не может, потому что он у него пустая сессия и его выкинет на страницу логина.
А с ссылка выхода работает. Не работает когда закрывают без ссылки выхода.

Вопрос про куки: что именно должно быть равно 0? session.cookie_lifetime? Оно равно 0 по умолчанию.

x-yuri 10.01.2011 00:01

я думаю, надо начать с того, что помотреть как другие чаты работают ;)

UPD можешь даже рассказать потом, мне тоже интересно :)

prog90 10.01.2011 00:17

x-yuri,
ну вобщем, да, можно) Но пока надеюсь и так что-нибудь найти.
Вобщем если узнаю, то в этой теме напишу)

Gvozd 10.01.2011 00:19

Цитата:

Сообщение от prog90
Он заходит с другой сессии, в другом браузере, и пытается залогиниться, и оказывается что такое логин еще активен и его не пускают

ну и на каком основании вы его не пускаете в чат?
пускайте его в чат

prog90 10.01.2011 01:02

дык а если он создаст генератор - будет посылать сообщения post со своим логином и паролем. И там за минуту набереться 100 одинаковых ников в чате. И будет крах.
Хотя не знаю...

Gvozd 10.01.2011 01:14

Цитата:

Сообщение от prog90
Хотя не знаю...

а кто знает?
если вы не знаете как работает написанный вами чат, то кто это знает?
Цитата:

Сообщение от prog90
дык а если он создаст генератор - будет посылать сообщения post со своим логином и паролем. И там за минуту набереться 100 одинаковых ников в чате. И будет крах.

что за глупость?
у вас на сервере будет один авторизованный пользователь с данным ником.
когда он авторизуется повторно, то вы просто меняете в таблице строку с цифрами времени, напротив его логина
у вас разве как-то иначе сделано?

x-yuri 10.01.2011 01:18

вообще аська, например, завершает предыдущую "сессию", если залогиниться, например, из другого мессенджера. По поводу skype не знаю. Так что можно так поступить. Только мотивы у них, скорее всего, другие. Например, кто-то может воспользоваться забытым тобой окном. В результате ты рискуешь потерять доступ к своей учетной записи

Цитата:

Сообщение от prog90
дык а если он создаст генератор - будет посылать сообщения post со своим логином и паролем. И там за минуту набереться 100 одинаковых ников в чате. И будет крах.

а если он создаст "генератор" и заспамит тебе весь чат через одну единственную сессию?

Цитата:

Сообщение от prog90
ну вобщем, да, можно) Но пока надеюсь и так что-нибудь найти.

если ты хочешь набить себе пару лишних шишек, то да, продолжай в том же духе. Тоже полезно, в общем-то. Но если ты хочешь добиться лучшего результата, надо начинать с изучения того, что сделали до тебя ;)

Gozar 10.01.2011 15:55

удалено.

prog90 10.01.2011 17:14

x-yuri,
Ну я конечно извиняюсь, но по части философии я считаю что списывать с других это полный бред. Потому что тогда можно просто и не писать а разобраться в коде, установить себе и работать.
Я согласен лишь с тем, что можно интересоваться стандартными, принятыми решениями где-то, методами. Но просто читать подряд чужой код и разбираться а потом писать - а зачем? Возьми да перекопируй. Или хочется просто повозиться с ошибками синтаксиса?
И потом пока сам не напишешь никогда толком не поймешь. А просто будешь по большому счету делать все по примеру кого-то.
Например поэтому осуждаю фреймворки.
Более того многое что написано - написано плохо. Учиться можно только у очень хороших учителей. Или же у общепризнанных методов.

Gozar 10.01.2011 18:33

удалено.

x-yuri 11.01.2011 03:36

prog90, чего ты мои слова коверкаешь? Я где-то говорил про копи-паст? Про "читать подряд чужой код"? Про то, что надо выключить мозг, изучая чужие решения?

а вообще да, жизнь - тяжелая штука... никому нельзя доверять... кругом одно г... пока сам не сделаешь - никто не сделает... голактеко опасносте... одна надежда на Онотоле prog90

ушел искать другой глобус...


Часовой пояс GMT +3, время: 18:33.