Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Relacje L!ve - problem z wydajnościa
marins
post
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.
Go to the top of the page
+Quote Post
erix
post
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. winksmiley.jpg

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!
Go to the top of the page
+Quote Post
marins
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 4
Dołączył: 12.07.2003

Ostrzeżenie: (0%)
-----


Cytat(erix @ 26.02.2010, 11:17:01 ) *
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. winksmiley.jpg


Cytat(erix @ 26.02.2010, 11:17:01 ) *
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.

Cytat(erix @ 26.02.2010, 11:17:01 ) *
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ą.
Go to the top of the page
+Quote Post
erix
post
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. winksmiley.jpg

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!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 20:18