![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 3 Dołączył: 5.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Posiadam stronę na której mam button. Chcę zapisywać każde kliknięcie i je obok wyświetlać. Nie wiem jak najlepiej zapisywać historie tych kliknięć żeby strona była zoptymalizowana. Lepiej zrobić to w pliku txt czy może w mysql?
P.s Wiecie może jak w porównaniu do pliku txt mysql wykonuje operacje? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście trzymam tablicę $_GET i $_POST w bazie mysql, razem z datą, ip itp. Baza danych zazwyczaj (chyba) jest w końcu przechowywana w plikach, lecz ma to większe znaczenie jeśli ktoś się decyduje na przechowywanie plików w blobie w bazie, ale nie o tym teraz. Jeśli chcesz tylko zapisywać a nie manipulować tym potem to zdecydowanie baza danych.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 3 Dołączył: 5.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Chcę zapisywać te informacje do bazy i je później odczytywać. Mankamentem jest to że może być kilkadziesiąt buttonów a w każdym po kilkaset kliknięć. Czy odczytanie kilkuset rekordów z mysql nie będzie trwać więcej niż z pliku tekstowego?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%) ![]() ![]() |
Czytelność zdecydowanie większa jest w bazie, szczególnie gdy się zapisuje każdą odsłonę forum, ponieważ usuwam z logów te bezużyteczne, czyli np. odświeżenie shoutboxa, które się wykonuje samoistnie. jedno zapytanie nawet przez klienta mysql i problem z głowy. Plik .txt jest również dostępny dla innych. (to zależy jak się postarasz żeby nie był) Być może będziesz coś modyfikował czy co, ja radzę mysql (IMG:style_emoticons/default/smile.gif) Ale to Twój wybór
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zainteresuj się mongo
http://www.progresowi.pl/2011/11/10/porown...vs-mongodb.html patrząc na ten test zapowiada się imponująco. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 3 Dołączył: 5.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ale czy baza mysql nada się do trzymania kilkuset tabel i w każdej po kilkaset rekordów? Bo mógłbym zrobić do każdego buttona inny plik i w nim trzymać logi. Co lepsze według was?
|
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
A może warto się posłużyć tym co oferuje Google Analytics? Masz tam opcję trackingu eventów tego typu, hm ...
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%) ![]() ![]() |
Warto, ale ja to tam wolę mieć swoje (: A nie lepiej zrobić jedną tabele i zapisywać też id buttona?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
@koxu1996:
Cytat Witam. Posiadam stronę na której mam button. Chcę zapisywać każde kliknięcie i je obok wyświetlać Ale, że co, dla każdego buttona trzymasz liczbę kliknięć wszystkich userów tak? Czy może dla każdego z osobna? Zresztą to bez znaczenia, baza na pewno jest lepszym rozwiązaniem. Cytat Ale czy baza mysql nada się do trzymania kilkuset tabel i w każdej po kilkaset rekordów? Bo mógłbym zrobić do każdego buttona inny plik i w nim trzymać logi. Co lepsze według was? Kilkaset tabel?(IMG:style_emoticons/default/questionmark.gif) Chcesz trzymasz każdy button w osobnej tabeli czy może czegoś nie rozumiem? Robimy tak (struktura tabeli): nazwa tabeli: button_clicks id (int, autoincrement) button_id (int): można zamienić na varchar jak wolisz posługiwać się nazwami, ale to mało optymalne) clicks (int): czyli liczba kliknięć. I wtedy, by uzyskać liczbę klików: Cytat SELECT * from button_clicks WHERE `button_id`=id_danego_buttona
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%) ![]() ![]() |
Raczej myślę że on by chciał zapisywać kliknięcie użytkownika razem z danymi użytkownika, czyli w jednej tabeli znajdzie się id, id użytkownika, id buttona, i ewentualnie ip, user agent itp.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 3 Dołączył: 3.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj może zrobić button który w momencie kliknięcie będzie tworzył zmienną np
, wyślij tą zmienną w postaci POST do wywoływanej strony. Następnie stwórz plik który będzie można includować na początku każdej strony, a który będzie sprawdzał czy taka zmienna została przekazana jeśli tak odczytywał tą zmienną a następnie w krótkiej komendzie dodawał do bazy danych np w formie Button, data, ip + yyy session['username'] i co tam jeszcze chcesz. Na koniec czyścić zmienną $log1 = NULL; i tyle Tak wiem dla programistów którzy już mają o wiele wiekszę doświadczenie jest to tragiczny kod i podejście do problemu, jednak nadal się uczę a w moim przypadku takie rozwiązanie problemu zdało egzamin (400 klikających coś na raz nie zamuliło serwera (IMG:style_emoticons/default/smile.gif) ) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Do logów potrzebna jest baza danych umożliwiająca szybki zapis (odczyt nie jest tak istotny) zróżnicowanych, nierelacyjnych danych. Tutaj Apache Casscandra wydaje się być jednym z faworytów.
Relacyjne bazy danych? Też dadzą radę, ale nie będą tak wygodne w użyciu. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 3 Dołączył: 5.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod:
Jednak kliknięcie nie dodaje w ogóle rekordów do bazy. Co zrobiłem nie tak? Ten post edytował koxu1996 18.07.2012, 13:05:49 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim nie rozumiesz różnicy pomiędzy kodem wykonywanym po stronie serwera i po stronie klienta (przeglądarki) - https://www.google.com/search?sugexp=chrome...+vs+client-side
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 3 Dołączył: 5.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi ci może o to że dodawanie rekordu jest po stronie klienta a nie serwera? Jakbym chciał zrobić po stronie serwera to wystarczył by submit i w pliku sprawdzenie czy został wciśnięty przycisk. Tylko wtedy strona by się przeładowywała. A mi chodzi o to żeby zapisywać i wyświetlać logi w czasie rzeczywistym, co podobno da się w js. Jednak javascript nie obsługuje łączenia z bazą danych mysql. To jak u licha mam to zrobić na bazach żeby działało w czasie rzeczywistym?
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Ajax to właśnie pomost pomiędzy JS a PHP.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 16:10 |