Skocz do zawartości
Zaloguj się, aby obserwować  
Daymo

Limit osób online na stronie?

Polecane posty

Witam, poszukuję skryptu na limit osób online na stronie, np. chcę ustawić limit 50 osób online, jak wejdzie 51 osoba to pokaże komunikat, że brak miejsc.. Jak do czegoś takiego się zabrać?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Cóż. Jako, że niektórzy czują się bardzo pokrzywdzeni dostanym "minusem" to wyjaśnienie zgrubne:

modyfikacja głównej dyrektywy konfiguracyjnej samego serwera NIE JEST skryptem, a o skrypt pytał autor.

Dodatkowo modyfikacja jej wpływa na wszystkie połączenia z danym serwerem, więc założyć należy, że

jest on pod wyłącznie pod ten cel, a to wcale nie jest takie oczywiste. Dodatkowo, limitować będzie nie tyle

liczbę odwiedzających, jak żądań. A to jest (wbrew pozorom) spora różnica.

 

Gotowca do czegoś takiego raczej nie ma. A tworząc takie narzędzie trzeba by sporo rzeczy uwzględnić.

Pierwsze - jak zdefiniować pojęcie OSOBA. TCP/IP nie jest protokołem stanowym, więc nie widać, czy

user jeszcze siedzi na stronie i za chwilę otworzy jakiś link, czy też user już dawno zamknął przeglądarkę.

Większość mechanizmów z którymi miałem doczynienia działała tak, że ograniczany był dostęp do strefy logowania.

Tzn. użytkownik się loguje i wtedy sprawdzana jest liczba wolnych slotów. Jeśli są jakieś, to logowanie zapisywane jest do bazy,

a czas ważności danej sesji to 10 minut od ostatniej akcji. Jeśli user się wyloguje lub w ciągu 10 minut nie wykona akcji,

to miejsce jest zwalniane. Jeśli nie ma wolnych slotów, to wtedy komunikat spróbuj później.

 

Problem tylko taki, że w momencie zdefiniowania takiego ograniczenia duża część użytkowników zacznie wykonywać odświeżenia strony i będzie lekko sfrustrowana, a poza tym te ciągłe sprawdzenia spowodują dość duże obciążenie systemu. Można więc gratis dołożyć rezerwację slotów czasowych - user dostaje komunikat, że teraz nie może, ale będzie mógł o godz. 20:15 odświeżyć i ma zagwarantowany slot. No ale to dochodzi problem albo z efektywnością albo koniecznością nadmiarowej obsługi slotów (bo co jak prawowici userzy będą przedłużać sesje - albo dopuścić wtedy tych gwarantowanych i przez pewien czas będzie więcej niż być powinno, no albo blokować slot, aby ktoś wchodzący pierwszy raz nie dostał go wcześniej).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeśli chcesz to rozwiązać koniecznie "serwerowo" to albo jakiś skrypt zliczający userów bazując na ich IP -> logowanie każdej akcji w jakimś access.log i dodawanie wszystkich IP, które wykonały konkretną akcję w przeciągu ~10 min do bazy, albo rozwiązanie czysto firewallowe w stylu:

 

 

iptables -A INPUT -p tcp --syn --dport 1337 -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset

 

Problem z tym rozwiązaniem jest taki, że tak jak @samu wspomniał wyżej protokół TCP nie działa w ten sposób i jest to dosyć "brzydkie" rozwiązanie, do tego nie realizuje tego do czego zmierzasz (user dostanie zwykły error po stronie przeglądarki, a nie wiadomość).

 

Najlepszym rozwiązaniem jest rozwiązanie bezpośrednio w danej aplikacji, większość playerów ma opcję pokazywania ilości widzów, a więc wystarczy prosty if na samym początku playera czy aktualny viewers_count jest mniejszy od 50.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To może podpowiecie jaki player rtmp www można użyć do takiego celu? Jestem w tym zielony..

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To wie ktoś jak zrobić taki limit w RED5? Szukałem poradników, ale ani angielskich ani tym bardziej polskich na ten temat..

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A ile chcesz zapłacić za takie rozwiązanie ?

zresztą ktoś ci już proponował wykonanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×