Online users

18 отговора 903 прегледа
#1

Online users

Здравейте.
Правя малко сайтче, което ще се разглейда само ако си регистриран.
Като се регистрира усера се стартира сесиа с усернама му.
Въпросът ми е как може (не питам дали може щото явно може) да се види кои усери в момента са онлине чрез сесията или трябва да ги записвам в база, когато стартират сесия и от там да ги извличам.

Отговор
в отговор на derley #2

Re: Online users

пишеш в базата

Отговор
в отговор на derley #3

Re: Online users

Явно ще трябва да ги съхранявам в Базата.
Възниква обаче следния въпрос:
Всичко е ок като се логират сесиата се записва в базата, като се разлогират се изтрива, но какво става ако си затворят сайта без да се разлогират. Сесията дефакто е прекратена, но как ще се изтрие от базата.

Или съм много тъп или не е чак толкова лесно.

Отговор
в отговор на derley #4

Re: Online users

При влизане на всяка нова страница си упдейтваш времето и си слагаш таймаут - примерно 15 мин.
Ако повече от 15 мин не е правил нищо в сайта, пиши го бегал.

Проблема не се решава в момента, в който си изтървете нервите
Отговор
в отговор на derley #5

Re: Online users

Може с още една сесийна променлива за броя усери онлине, която да инкрементираш и декрементираш съответно

Отговор
в отговор на lazo #6

Re: Online users

и за какво ще се побзва тази променлива?

Moscow, раз-два-три, Moscow, посмотри.
Отговор
в отговор на Ивaнyшka #7

Re: Online users

E dobre de tia sesiata shte se unishtoji sled 15 minuti, ama kakshte se otrazi w bazata che e iztekla sled kato skripta e zatworen

Отговор
в отговор на ss #8

Re: Online users

Сесията не те интересува.
Пишеш си в базата в таблицата с посетителите последно време на активност.
Него си го опресняваш на всяка страница на която влиза потребителя.
И като следиш кои са онлайн вадиш списъка на тези, които са имали активност в последните 15 мин примерно. Можеш да сложиш и друг интервал ако пожелаеш.
А последните 15 мин можеш да ги получиш като извадиш записаното време от настоящето време.

Проблема не се решава в момента, в който си изтървете нервите
Отговор
в отговор на Ивaнyшka #9

Re: Online users

тцъ ... ако искаш да се пазиш от повече от едно влизане с един усер ще трябва да пазиш и да терминираш ако не се изпълнява условието. Това е теста за да не може да се логне с един усер от няколко места ако е прехваната сесията, просто я дистройваш и усер дет си има лоин ще се риджектне и след това пак ще се логне.

Moscow, раз-два-три, Moscow, посмотри.
Отговор
в отговор на Bълk #10

Re: Online users

Dobre de nemoje li prosto predi da si startirash sesiqta na toq koito se logva da prebroish kolko files imash v direktoriikata sys sesiite i files = sessions = online users. E tuk shte se naloji kato se destroyva sesiqta da se i zabursva ot session direktoriqta. ili gresha ?

Отговор
в отговор на lam #11

Re: Online users

а имаш ли достъп към директорията ползвайки шаред хостинг? а и да имаш, как ще определиш еди кой си файл за кой сайт се отнася?

Moscow, раз-два-три, Moscow, посмотри.
Отговор
в отговор на Bълk #12

Re: Online users

za sobstveni nujdi moje da svryshi rabota. No ako imam prava za dostap do direktoriikata sys session files prespokoino moje da izpukam 1 script koito da mi kazva kakvo imam v tiiq files i otam polojenieto stava strashno. Sorry ideqta beshe tupa

Отговор
в отговор на Ивaнyшka #13

Re: Online users

Явно това е решението, макар че ми се струва че тези постоянни ъпдейти към базата доста ще увеличат трафика (особено ако предположим хипотетично че има 1000 усера, а страниците през които сарфират са 20-тина.

ако някой има по-добра идея нека да я сподели

Отговор
в отговор на derley #14

Re: Online users

Нямам представа как го таксува хостинга ти, но принципно това си е вътрешен трафик на самата машина (MySQL на localhost) и определено не се отчита.

Проблема не се решава в момента, в който си изтървете нервите
Отговор
в отговор на Ивaнyшka #15

Re: Online users

ако mysqld e на същата машина, че нещо впоследно време се натъква на хостинги дет отделен сървър за mysql

Moscow, раз-два-три, Moscow, посмотри.
Отговор
в отговор на derley #16

Re: Online users

Аз съм направил нещо подобно на PHP, с единствената разлика, че базата ми е MS SQL Server 2000. Та там в една таблица всеки, който се логне си създава собствен уникален запис. В едно от полетата се записва времето му на престой на сайта, като това време се актуализира при всяко отваряне на страница от сайта, а всяка страница се рефрешва на 15 минути ако посетителя не е затворил браузера и при въпросния рефреш се актуализира същото поле. След което на SQL Server имам създаден един Job, който се изпълнява на 15 минути и който трие всички записи, които не са били актуализирани през последните 15 минути. Ми тва е, дано съм ти бил полезен, ако не с друго поне с някоя идея

Отговор
в отговор на derley #17

Re: Online users

Mi.... s MySQL twa ne ti e problem... dori da sa 10000 potrebitelq za 5 minuti twa sa ti 10 000 zaqwki sredno po 2000 na minuta.... t.e. edna zaqwka takawa s ne osobena slojnost ne te gree...

Otnosno drugite warianti - ima6 edna direktoriq w koqto wseki user si ima fail s negowiq nick primewrno i pri wsqka aktiwnost na user-a pi6e6 ne6to wytre taka 4e 4asa na poslednata promqna da se promeni.... gleda6 wremeto i ako e minalo powe4e ot 15 miniti go trie6 toq fail....

4isto otkym byrzina i slojnost ne e mnogo po razli4no ot MySQL-a no az opredeleno ne bih go izpolzwal... wse pak ako ne iska6 SQL...

Отговор
в отговор на nqma_me #18

Re: Online users

2000 заявки на минута в шаръд хостинг върху който има още 500 такива .. я да те видя...

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

Отговор
в отговор на Bълk #19

Re: Online users

Na 150% si prav... no wse pak toi kaza 4e e malko sait4e :))))

Отговор