Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PDO]Asynchroniczne zapytania do bazy
Mackos
post 29.06.2014, 14:29:02
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Pracuję nad małym serwerem hostującym reklamy, i chcę teraz przygotować sam mechanizm serwujący.
Co jest oczywiste każde wyświetlenie reklamy wiąże się z zapytaniem do bazy i o ile wyciągnięcie odpowiedniej reklamy można odciążyć przez memcache, o tyle zastanawiam się nad zapisem danych o wyświetleniu do bazy.
W związku z czym chciałem zapytać czy znacie lub macie może pomysł na generowanie asynchronicznych zapytań do bazy, które dałoby się zrealizować bez memcache i z obsługą PDO?


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
by_ikar
post 29.06.2014, 18:41:28
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Widziałem ostatnio kilka takich pomysłów jak i realizacji w node.js + redis, lub nawet samo node.js z użyciem dirty (coś jak memcached). No ale to też zależy jak mały lub jak duży ten serwer hostujący reklamy ma być.. Bo może być tak że samo php i mysql ci wystarczą.
Go to the top of the page
+Quote Post
Mackos
post 29.06.2014, 21:06:44
Post #3





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Wiesz co ten serwer już jest i jest spory (aktualnie apka podzielona na 4 serwery w tym 3 VPS'y).
Działa tak że po odpaleniu, pobiera nagłówki, na ich podstawie przypisuje reklamę do pokazania.
Losuje reklamę za pomocą albo MySQL albo jeśli hash nagłówków odwiedzająceg już się powtórzył to reklamę ładuje z memcache na podstawie wcześniejszego selectu.
Jeśli hash odwiedzającego jest unikalny zapisuje całe info do bazy/
Teraz sprawa ma się tak że selecty da się przeżyć no bo nie są jakieś ciężkie + memcache, ale jednoczesny INSERT to już dużo (bo reklama ma się ładować ultra szybko).
Więc szukam sposobu żeby opóźnić cały proces wrzucania insertów lub wrzucać je grupowo - zebrać wielowymiarową tablicę nagłówków i innym skryptem ją dodawać do bazy.

Ten post edytował Mackos 29.06.2014, 21:10:19


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
by_ikar
post 29.06.2014, 22:26:57
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


No to node.js + dirty byłoby tym czego potrzebujesz (dirty jest fajny gdzieś do miliona rekordów, potem już lepiej użyć jakiegoś redisa czy innego mongo). Ale możesz to przecież również zrobić na poziomie memcache. Wrzucasz takie dane do memcache z konkretnym prefixem, następnie jakiś cron w tle sobie lata i powiedzmy co 2-3 minuty zbiera te dane i robi inserty na bazie. Dane będą aktualizowane, a obciążenie nie będzie się generować bezpośrednio podczas wyświetlania reklamy.

Ale serio, właśnie sprawdzałem i można nawet znaleźć kilka gotowych ad serwerów w node.js.

Ten post edytował by_ikar 29.06.2014, 22:27:49
Go to the top of the page
+Quote Post
Mackos
post 1.07.2014, 12:25:57
Post #5





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


W gruncie rzeczy masz racje.
Nie chciałem robić tego z zapisywaniem do memcache bo co jeśli serwer memcache padnie. ALE obecnie działa bez tego zapisywania i daje radę - więc chyba tak najwygodniej to załatwić wink.gif
Dzięki.


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
by_ikar
post 1.07.2014, 14:08:11
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Jeżeli memcache padnie, na to też jest sposób. Nie do końca jestem pewien czy masz zainstalowane jakiegoś cachera opcode (xcache, apc) ale one również udostępniają podobną funkcjonalność co memcache(d), czyli przechowywanie jakichś danych w pamięci ram. Możesz zrobić tak że wstawisz sobie warunek w obiekcie który zapisuje/odczytuje dane z memcache i jeżeli wystąpi błąd, przerzucasz działanie na xcache, apc czy coś podobnego. No i jeżeli nie masz zainstalowanego żadnego cachera, to polecam, bo zyskujesz na tym sporo (mniejsze zużycie pamięci, mniej operacji IO, oraz zmniejszenie czasu potrzebnego na request).
Go to the top of the page
+Quote Post
Mackos
post 4.07.2014, 00:48:52
Post #7





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Dzięki, własnie się bawię xcache - jak narazie wszystko po upgrade ładnie śmiga smile.gif


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
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 Wersja Lo-Fi Aktualny czas: 20.04.2024 - 01:41