Вопрос про session.gc_maxlifetime
Подскажите, что значит опция конигурации session.gc_maxlifetime на сервере apache? Через сколько будет удален файл сессии, после последней отправки клиентом куки с номером сессии? Или через сколько она будет удалена, после создания, независимо от общения с клиентом?
|
Цитата:
после последнего доступа к файлу сессии |
дада. интерпретатор php. оговорился
|
А для кого эта опция выставляется? для всех и на все время? Например, если вызвать открыть сессию и вызвать ini_set, то для этой сессии опция изменится? или после окончания работы скрипта, опция опять восстановится?
Там где я пишу, она восстанавливается на 1440. |
вы справку пробовали читать?
там же |
prog90, давай ты начнешь с того, что обозначишь проблему ;)
|
А то что это написано в файле 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 секунд. В чате окно обновляется каждые несколько секунд. Поэтому если закроют браузер или вкладку, то перестанут обращаться к скрипту. Может быть есть еще вариант как это сделать. |
выставьте время жизни кукам в 0
при закрытии вкладки они будут удалены |
Проблема в том, что если браузер закрыт, и файл куки с сессией унитожен, а сессия на сервере остается, то когда тот же пользователь заходит заново, и ему выдается другая сессия, то получается, что в чате еще есть ктото с его логином и паролем. И ему приходится вывести ошибку - пользователь с таким логином уже в чате.
А если это не считать за ошибку, то тогда один пользователь сможет зайти два раза под своим логином. Или три. И например как мне кажется может поставить генератор, и зайти 1000 раз подряд, и испортить чат. |
что за бред?
ты разве для того чтобы определить кто в чате "On-line", перебираешь все файлы сессий, что ли? нормальные люди on-line определяют так: где-нибудь указывается список чатлан, и время последней активности. те, которые были неактивны долго, либо нажали кнопку выхода, считаются неактивными. сессии тут абсолютно не при чем. если пользователь зайдет второй раз в чат, ему выдастся новая сессия, с информацией для него лично. старая такая информация для него уже потеряна, если не сохранена в БД со временем, старая сессия будет удалена сборщиком мусора |
блин, у меня именно так и сделано - в таблице рядом с логином стоит время последней активности и показатель 1 или 0.
Он заходит с другой сессии, в другом браузере, и пытается залогиниться, и оказывается что такое логин еще активен и его не пускают. тогда как войти прямо в чат он не может, потому что он у него пустая сессия и его выкинет на страницу логина. А с ссылка выхода работает. Не работает когда закрывают без ссылки выхода. Вопрос про куки: что именно должно быть равно 0? session.cookie_lifetime? Оно равно 0 по умолчанию. |
я думаю, надо начать с того, что помотреть как другие чаты работают ;)
UPD можешь даже рассказать потом, мне тоже интересно :) |
x-yuri,
ну вобщем, да, можно) Но пока надеюсь и так что-нибудь найти. Вобщем если узнаю, то в этой теме напишу) |
Цитата:
пускайте его в чат |
дык а если он создаст генератор - будет посылать сообщения post со своим логином и паролем. И там за минуту набереться 100 одинаковых ников в чате. И будет крах.
Хотя не знаю... |
Цитата:
если вы не знаете как работает написанный вами чат, то кто это знает? Цитата:
у вас на сервере будет один авторизованный пользователь с данным ником. когда он авторизуется повторно, то вы просто меняете в таблице строку с цифрами времени, напротив его логина у вас разве как-то иначе сделано? |
вообще аська, например, завершает предыдущую "сессию", если залогиниться, например, из другого мессенджера. По поводу skype не знаю. Так что можно так поступить. Только мотивы у них, скорее всего, другие. Например, кто-то может воспользоваться забытым тобой окном. В результате ты рискуешь потерять доступ к своей учетной записи
Цитата:
Цитата:
|
удалено.
|
x-yuri,
Ну я конечно извиняюсь, но по части философии я считаю что списывать с других это полный бред. Потому что тогда можно просто и не писать а разобраться в коде, установить себе и работать. Я согласен лишь с тем, что можно интересоваться стандартными, принятыми решениями где-то, методами. Но просто читать подряд чужой код и разбираться а потом писать - а зачем? Возьми да перекопируй. Или хочется просто повозиться с ошибками синтаксиса? И потом пока сам не напишешь никогда толком не поймешь. А просто будешь по большому счету делать все по примеру кого-то. Например поэтому осуждаю фреймворки. Более того многое что написано - написано плохо. Учиться можно только у очень хороших учителей. Или же у общепризнанных методов. |
удалено.
|
prog90, чего ты мои слова коверкаешь? Я где-то говорил про копи-паст? Про "читать подряд чужой код"? Про то, что надо выключить мозг, изучая чужие решения?
а вообще да, жизнь - тяжелая штука... никому нельзя доверять... кругом одно г... пока сам не сделаешь - никто не сделает... голактеко опасносте... одна надежда на ушел искать другой глобус... |
Часовой пояс GMT +3, время: 18:33. |