Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> rotator bannerow przy duzej ogladalnosci, ~200 tys dziennie, ~2 mln miesiecznie
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hej!
Bede pisal rotator bannerow dedykowany pod duza ogladalnosc serwisu. Miesiecznie jest to ok. 2 mln odslon, czyli wychodzi ok. 4 odslon na sekunde (liczac ze strona jest przegladana od 8:00 do 22:00).
Chcialbym sie was poradzic czy dobry system wymyslilem jak to wszystko zrobic aby sprawnie dzialalo.
Otoz widze to tak, ze mam w bazie tabele glowna oraz dzienna. Tabela glowna jest zbiorem zrzutow tabeli dzienna. User wchodzacy na strone otrzymuje banner; identyfikator bannera + data wyswietlenia i inne duperele sa wpisywane do tabeli dziennej. I tak za kazdym razem - mniejsza tabela -> szybsze operacje. Wpisywanie widze poprzez uzycie DELAYED INSERT zeby szybciej zwolnic skrypt. No i tak przez caly dzien tabela dzienna bedzie uzupelniana o dane. W nocy (mysle ok. 3 lub 4 w nocy) cron bedzie zrzucal dane z tabeli dziennej, wrzucal je do tabeli glownej i robil TRUNCATE tabeli dziennej. Na czas tej operacji moznaby wylaczac serwis.
Nie wiem czy jako tabele glowna nie zrobic zbioru tabel np. styczen-2007, luty-2007 zeby nie przepelnic tabeli glownej danymi. W sumie bedzie ona obslugiwana tylko przez administratora no ale wiadomo: co za duzo to niezdrowo. Takie rzeczy jak statystyki bedzie wtedy mozna robic tylko dla danego miesiaca, nie w przekroju rocznym - szkoda obciazac baze robiac SELECTa dla ~ 24 mln rekordow...
Prosilbym was o porady, uwagi. Na co zwrocic uwage projektujac baze danych. Ogolnie prosilbym o wszystkie informacje, ktore pozwola przyspieszyc caly proces pobierania danych o wyswietlanych bannerach oraz o kliknieciach w nie.
Pozdrawiam: pion
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No ja mam 2 kolejne mysli. Pierwsza to uzycie PostgreSQL zamiast MySQL. Druga natomiast to zrzut bazy do pliku *.php. Otoz chyba duzo szybsze od laczenia z baza i robieniem SELECTa przy kazdym losowaniu bannera bedzie taki myk, ze podczas dodawania/usuwania/edycji bazy bannerow bedzie wykonywana funkcja, ktora bedzie pobierala dane z bazy listy bannerow i zapisywala je w pliku z rozszerzeniem *.php ale w formie gotowej tablicy tj.
  1. <?php
  2. $array = array('banner1', 'banner2');
  3. ?>

Oczywiscie w mega uproszczeniu. Plik ten bedzie po prostu includowany i z tej tablicy bedzie wybierany jakis banner. Pozostaje kwestia update'owania tegoz pliku. Bede musial wykonac testy co bedzie szybsze:
- otwarcie pliku w trybie w+ i wpisanie nowej zawartosci
- utworzenie rownolegle drugiego pliku np. baza_new.php, usuniecie starego (np. baza.php) i zmiana nazwy baza_new.php na baza.php
Do tej pory sporo czytalem o optymalizacji samych skryptow php, musze jeszcze przeczytac o optymalizacji baz.

Przy okazji mialbym pytanie bo w sumie nigdy z tego nie korzystalem: w jaki sposob dziala stale polaczenie z baza danych? Teorie znam - ze nie nawiazuje polaczenia dla takich samych parametrow tylko uzywa juz otwartego. Jak to wyglada w praktyce? Majac skrypt.php i w nim otwarte stale polaczenie kazy internauta wchodzacy na skrypt.php uzywa tego samego polaczenia? Czy w moim przypadku nie byloby to dobre roziwazanie? Kwestia tylko taka, ze w takim wypadku polaczenie to byloby otwarte 24h/dobe...
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 14:06