![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 4 Dołączył: 12.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
napisałem autorski skrypt do relacji live. Zaczynałem do 50 osób online potem, 200, 1000 i ostatnio 2650. I tutaj pojawił się problem - mój serwer nie daje rady - ale jest to spowodowane złą optymalizacją skryptu PHP. Live dzieli się na front i admin. Admin - działa na mysql i końcowe dane zapisuje do pliku txt. Front - do tej pory łączył się z bazą robił insert, bądź update na podstawie session_id i na końcu zwracał sumę wyników z ostatnich 10 minut. ale było to 2650 połączeń i zapytań do bazy w ciągu 5 minut ... co nam daje 9 połączeń na 1s. Przerobiłem ostatnio licznik online na tekstowy: 1. otwieram plik szuka rekordu foreach'em jak jest to update, jak nie ma to dodaje. zamykam plik 2. otwiera ten sam plik i zlicza stan osob online - zwraca wynik Przed tym wszystkim otwieram jeszcze plik z danymi do relacji. Czy jest to dobra zmiana która pozwoli mi na obsługę 4-5 tys osob? Czy jest to najbardziej optymalny sposób? Dodam tylko, że licznik online jest niezbędny. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Dodam tylko, że licznik online jest niezbędny. Tabela memory z ostatnią aktywnością i update po indeksie char (SID). Wtedy wyciąganie liczby będzie bajką, zarówno z powodu łatwości, jak i prędkości. ![]() Cytat Przerobiłem ostatnio licznik online na tekstowy: Ok, ale każde odświeżenie będzie powodowało blokadę, w której reszta będzie musiała czekać. Cytat Przed tym wszystkim otwieram jeszcze plik z danymi do relacji. A nie masz dostępu do memcached? Przy takiej ilości użytkowników właściwie staje się on niezbędny. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 4 Dołączył: 12.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
Tabela memory z ostatnią aktywnością i update po indeksie char (SID). Wtedy wyciąganie liczby będzie bajką, zarówno z powodu łatwości, jak i prędkości. ![]() Ok, ale każde odświeżenie będzie powodowało blokadę, w której reszta będzie musiała czekać. Czyli rozumiem, że w tym wypadku mysql jest niezbędny? ewentualnie procedura w SQL. Nie ma innej metody? - bo rzeczywiście z tymi plikami to może być krucho, a nie chcę za bardzo z tym sql. A nie masz dostępu do memcached? Przy takiej ilości użytkowników właściwie staje się on niezbędny. Plik z całą relacją jest w txt. potem js go przerabia. problem tkwi własnie tylko w dograniu liczby osob on-line ewentualnie moge zapisywac sesje po stronie fronta. obliczenia robić po stronie admina i doklejać do pliku txt z relacją. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Największym problemem jest tu jednoczesne otwieranie N-tysięcy razy jednego pliku.
Cytat Nie ma innej metody? - bo rzeczywiście z tymi plikami to może być krucho, a nie chcę za bardzo z tym sql. Podaj choć jeden racjonalny argument. Przy serwisie o takiej skali SQL nie jest niczym dziwnym. ![]() Cytat ewentualnie moge zapisywac sesje po stronie fronta. ? -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 20:18 |