Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zaawansowany system reklamowy
Michael2318
post 30.11.2013, 13:35:27
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Ponieważ ten temat umarł: http://forum.php.pl/index.php?showtopic=22...p;#entry1077833
Chciałbym go dokończyć tutaj.
Znalazłem inne rozwiązanie (tak myślę), które nie potrzebuje ani crona ani kasowania danych itd. Struktura tabeli po prostu taka:
adverts_views:
view_id | advert_id | ip | date_format

Teraz unikalny indeks na IP oraz date_format, gdzie date_format jest takiej postaci: 30-11-2013. W tym momencie do tabeli wlatują rekordy osób, które w danym dniu jeszcze nie widziały danej reklamy.

Pytanie czy to dobre rozwiązanie oraz jaki typ pola dobrać do przechowywania daty w takiej postaci. Dodam, że taką formę daty tworzy się w ten sposób:

  1. UPDATE `tabela` SET date_format = DATE_FORMAT(NOW(),'%d-%m-%Y') WHERE pole = costam;


No i jeszcze zastanawiam się czy dodatkowo wykorzystać tutaj te cookies/sesje, aby zbednie nie wywalać co odświeżenie "insert into bla bla bla" - wiadomo, że jest indeks i nic nei wejdzie do tej tabeli, jesli mialby powstać jakis dubel, ale po co zbednie co chwile walić to zapytanie?

Pozdrawiam!

Ten post edytował Michael2318 30.11.2013, 13:37:32
Go to the top of the page
+Quote Post
SmokAnalog
post 30.11.2013, 13:39:26
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


W MySQL masz wbudowany typ date, który ma postać 2013-11-30. Nie musisz nic konwertować, samo now() tam się dobrze wstawi.

Twój pomysł jest dobry i prosty - ja też myślałem o takim rozwiązaniu. Miałem wątpliwości, bo taka tabela będzie bardzo szybko rosła i potem sprawdzanie tych IP i dat będzie musiało przeanalizować wiele rekordów.

Czy Twoja strona będzie miała bardzo dużo wyświetleń?
Go to the top of the page
+Quote Post
Michael2318
post 30.11.2013, 13:44:31
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Taki jest ogólnie cel, to będzie coś al'a portal ogłoszeniowy, typu tablica.pl, tyle że ogłoszenia dot. konkretnej kategorii, więc jeśli pomysł wypali to może być sporo wyświetleń.
Zawsze mogę zrobić tak, że reklamy, które już osiągnęły limit ( np. ktoś wykupił 1000 wyświetleń i już tyle wyświetleń dana reklama osiągnęła) to przeniąsę te dane do tabeli typu 'archives' i jeśli user bedzie chcial sprawdzic sobie staty jego reklamy to będę je już pobierał z archiwum, dopisując przy tym, że reklama nie jest już emitowana bo osiągnęła limit.
Dodatkowo chcę zrobić tak, aby max. 5-10 reklam się wyświetlało, nie więcej i jak jedna reklama osiągnie limit to wskoczy nowa, i tak w kółko.

Cytat
Miałem wątpliwości, bo taka tabela będzie bardzo szybko rosła i potem sprawdzanie tych IP i dat będzie musiało przeanalizować wiele rekordów.


Dlatego też dodatkowo dorzuciłbym te sesje/ciastka tylko wiadomo, że to takie "zabezpieczenie" jak wcale. Coś da, ale cudów nie będzie.

Ten post edytował Michael2318 30.11.2013, 13:51:43
Go to the top of the page
+Quote Post
SmokAnalog
post 30.11.2013, 13:58:10
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ja bym mimo wszystko zrobił inaczej. Podoba mi się pomysł na osobną tabelę z archiwum i to na niej oparłbym statystyki. Ja widzę to tak:

Do tablicy adverts_views wrzucasz WSZYSTKIE wyświetlenia. Obojętnie czy ktoś ma być zliczony czy nie.

Do tablicy adverts_views_archive wrzucasz codziennie po północy (cron) całą zawartość adverts_views, a adverts_views czyścisz. Nie musisz przy tej operacji sprawdzać żadnych dat ani nic - po prostu wychodzisz z założenia, że to, co jest w adverts_views na ten moment ma zostać przeniesione do archiwum i wszystkie blokady zostają zdjęte (bo każdy może np. mieć zliczony jeden głos na dany dzień).

W swoim panelu do statystyk, wyniki są generowane na podstawie obu tabel, żebyś miał podgląd w czasie rzeczywistym. To będzie bardzo łatwe do osiągnięcia w MySQL dzięki operatorowi UNION.

Uważam, że warto archiwizować wszystko, bo kiedyś mogą Ci się przydać do czegoś dane o nieunikalnych wyświetleniach - nigdy nie wiadomo.
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: 14.08.2025 - 07:44