Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> licznik odwiedzin dzienny i całościowy
japolak
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


witam
chce sobie zliczać ilość odwiedzin danej podstrony w ciągu dnia i całościowo.

z tym drugim nie mam problemu
lecz zastanawiam się nad tym dziennym

chciałbym rozwiązać ten temat wykorzystując tylko jedną tabele w bazie danych

poniżej przedstawiam algorytm jak bym chciał to rozwiązać.


(IMG:http://img715.imageshack.us/img715/8642/dscn4837r.jpg)


czy to będzie wydajne? czy moze macie jakieś inne prostrze rozwiazania?

ok.. jako ze nie moge sie na odpowiedz doczekać
sworzyłem kod..

co o tym myslicie? lipa czy moze byc? ogolnie działa

  1. //naliczanie odwiedzin na dany dzien
  2.  
  3. $period=date('d-m-Y');
  4.  
  5. $sql_day="select * from page_counter where page_name='".$page_name."' and period='".$period."'";
  6.  
  7. $result = $connect->query($sql_day);
  8. if(!$result){
  9. echo"błąd licznika 2 ";
  10. }
  11.  
  12. //jezeli nie istnieje odwiedzenie na dany dzien wykonaj to
  13. if ($result->num_rows==0){
  14.  
  15.  
  16.  
  17. // czy wogole istnieje jakis zapis na inny dzien niz aktualny ?
  18. $sql_day2="select * from page_counter where page_name='".$page_name."' and period!='all' and period!='".$period."'";
  19. $result = $connect->query($sql_day2);
  20. if(!$result){
  21. echo"błąd licznika 2 ";
  22. }
  23.  
  24. //jezeli nie istnieje jakis zapis na inny dzien niz aktualny wykonaj to
  25. if ($result->num_rows==0){
  26.  
  27. $sql="insert into page_counter(page_name, period, visits_all) values ('".$page_name."','".$period."','1')";
  28. $result=$connect->query($sql);
  29. if(!$result){
  30. echo"błąd licznika";
  31. }else{}
  32.  
  33.  
  34. }
  35. // jesli istnieje jakis zapis na inny dzien niz aktualny
  36. else{
  37. $sql="update page_counter set visits_all=1,period='".$period."' where page_name='".$page_name."' and period!='all'";
  38. $result=$connect->query($sql);
  39. if(!$result){
  40. echo"błąd licznika";
  41. }
  42. else{
  43.  
  44. }
  45. }
  46.  
  47. }
  48. // jezeli istnieje to
  49. else {
  50. $sql_day22="update page_counter set visits_all=visits_all+1 where page_name='".$page_name."' and period='".$period."'";
  51. $result22=$connect->query($sql_day22);
  52. if(!$result22){
  53. echo"błąd licznika ";
  54. }
  55.  
  56.  
  57.  
  58.  
  59. }
  60.  
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Twórz nowy rekord dla każdych odwiedzin. Jeśli troszczysz się o rozmiar bazy, uruchom raz dziennie zadanie CRON które zliczy i usunie rekordy z minionego dnia, a informację o ilości odwiedzin zarchiwizuje w osobnej tabeli. Innego wyjścia nie widzę.

Ten post edytował wNogachSpisz 8.03.2013, 01:03:55
Go to the top of the page
+Quote Post
Majcon
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

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


zrób to na ciasteczkach
  1. <?php
  2. if(empty($_COOKIE['domena_licznik'])){
  3. setcookie('domena_licznik' , '1', time()+60*60*24);
  4. tu kod który sprawdzi czy istnieje dzisiejszy dzień w ba bazie jeśli nie to insert
  5. potem pobieramy liczbę odwiedzin z dzisiejszego dnia dodajemy jeden i do rezultatu i robimy update
  6. }
  7. ?>

Nie korzystam z takiego połączenia z bazą więc nie wstąpiłem zapytań pozatym jestem na telefonie ;D
Go to the top of the page
+Quote Post
foxbond
post
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 12
Dołączył: 20.12.2009
Skąd: Siedlce

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


Na pewno nie korzystaj z ciasteczek....

Cytat
Twórz nowy rekord dla każdych odwiedzin. Jeśli troszczysz się o rozmiar bazy, uruchom raz dziennie zadanie CRON które zliczy i usunie rekordy z minionego dnia, a informację o ilości odwiedzin zarchiwizuje w osobnej tabeli. Innego wyjścia nie widzę.



TO jest najlepsze wyjście, przy 1mln UU będziesz miał 1mln rekordów co spokojnie baza obsłuży, a unikniesz tego całego kombinowania.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 10:27