[PHP] Kontrola ilości klientów

0

Witam!
Projektuję ogromny system downloadu. Chcę wprowadzić dla użytkowników no-premium pewne ograniczenie. Mianowicie że jeden plik może pobierać tylko 10 userów no-premium a inni muszą poczekać aż któryś z nich skończy w kolejce (tak jak na WP). Jak skontrolować ile osób w danym momencie pobiera plik? (Mam do dyspozycji dedyka)

0

zapisać rozpoczęcie ściągania, obliczyć ile się plik będzie średnio ściągał i na tenokres czasu powiększyć zmienną o jeden. Czas się skończy - pomniejszasz.

0

Może i tak... Ale mnie kręcą bardziej pr0 rozwiązania. Jak oni to robią np. na Rapidzie że nie możesz pobierać 2 plików na raz z jednego IP?

0

to proste, zapisują do bazy danych twoje ip, trzymają je przez jakiś tam czas(nie wiem ile, bo ja mam neo i zawsze sie rozłączam, chyba 90 min?), no a po upływie tego czasu usuwa się rekord. Czy ja wiem czy to takie pr0 rozwiązanie? Kilka(może kilkanaście) minut kodzenia i gotowe.

0

Ale mi chodzi o to jak oni to robią że nie możesz pobierać 2 plików jednocześnie. Do momentu kiedy pobiera się plik masz: "Your IP is already downloading a file.". O to mi chodzi. Rozwiązanie tego problemu byłoby rozwiązaniem wszystkich problemów.

0

Przeciez Ci Loganek napisal. Zapisuja w bazie IP, w przypadku proby pobrania nowego pliku sprawdzaja czy IP istnieje w bazie i wypisuja komunikat.

0

Tylko jak oni je usuwają? PHP czyta plik przez ReadFile() i od razu przechodzi do kolejnej komendy, a nie czeka aż user pobierze plik. Może zrobić z fread()?

0

Nie da sie poczekac az user pobierze plik :P Zwracasz tresc pliku jako odpowiedz na żądanie o strone zmieniajac po drodze naglowki, tak zeby przegladarka rozpoznala, ze to plik, a nie np. html.

Mozesz sprobowac czy skrypt po przeslaniu pliku idzie dalej w tym samym momencie, w ktorym uzytkownik skonczyl go sciagac. Ale wydaje mi sie, ze po drodze jest pare buforow i skrypt duzo wczesniej skonczy 'wypisywanie' pliku niz uzytkownik go otrzyma.

0

No właśnie... Więc jedyną sensowną drogą jest obliczenie średniego czasu.

0

Nie do konca. Przy non-premium limit wysylania jest okreslony, stad latwo wyliczyc ile zajmie sciaganie pliku na 'max' obrotach. Wtedy wiesz, kiedy najwczesniej ktos skonczy go sciagac i taki ustawiasz limit czasu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0