Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: licznik odwiedzin dzienny i całościowy
Forum PHP.pl > Forum > PHP
japolak
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ć.





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.  
wNogachSpisz
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ę.
Majcon
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
foxbond
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.