Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Licznik tekstowy i problem
qarles
post 12.02.2011, 18:51:14
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


Witam bardzo serdecznie. Mam taki kod licznika:
Kod
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=ISO-8859-2">
<meta name="Keywords" content=" futsal sport +, futsal sport plus, futsal sport, futsal malopolska, futsal małopolska, liga futsalu, futsal">

<title>Futsal Sport+</title>
<link rel="Shortcut icon" href="obrazki/icon.png" />
<link rel="Stylesheet" href="style.css" type="text/css">
</head>

<body>

<?php

function polnoc()
{
   $teraz = date("H:i:s");
   $czas = explode(":", $teraz);
   $godziny = 23-$czas[0];
   $minuty  = 59-$czas[1];
   $sekundy = 59-$czas[2];
   $waznosc = $godziny*3600 + $minuty*60 + $sekundy;
   return $waznosc;
}

        if((!strstr($_SERVER['HTTP_REFERER'], "www.futsalsportplus.pl")))
        {

                $plik = fopen("js/licznik.txt", "r");
                $tekst = fread($plik, filesize("js/licznik.txt"));
                $dane = explode(";", $tekst);
                fclose($plik);
                $plik = fopen("js/licznik.txt", "w");
                flock($plik, 2);
                $dane[0]++;
                fwrite($plik, "$dane[0];", 15);
                flock($plik, 3);
                fclose($plik);

        $data = date("Y-m-d");
        $dzienny=fopen("js/dzienny.txt","r");
        $dzienny_tekst =fread($dzienny, filesize("js/dzienny.txt"));
        $dane2 = explode(":", $dzienny_tekst);
        fclose($dzienny);
        
         $data2 = date("Y-m");
        $miesiac=fopen("js/miesiac.txt","r");
        $miesiac_tekst =fread($miesiac, filesize("js/miesiac.txt"));
        $dane3 = explode(":", $miesiac_tekst);
        fclose($miesiac);
        

        if($dane2[0]==$data)
      { $dane2[1]++;
                $dzienny=fopen("js/dzienny.txt","w");
                flock($dzienny, 2);
                fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30);
          flock($dzienny, 3);
          fclose($dzienny);
        }
        else
        { $dane2[2]=$dane2[0];
          $dane2[3]=$dane2[1];
          $dane2[0]=$data;
          $dane2[1]=1;
          $dzienny=fopen("js/dzienny.txt","w");
          flock($dzienny, 2);
          fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30);
          flock($dzienny, 3);
          fclose($dzienny);
        }
        
        if($dane3[0]==$data2)
      { $dane3[1]++;
                $miesiac=fopen("js/miesiac.txt","w");
                flock($miesiac, 2);
                fwrite($miesiac, "$dane3[0]:$dane3[1]:$dane3[2]:$dane3[3]", 30);
          flock($miesiac, 3);
          fclose($miesiac);
        }
        else
        { $dane3[2]=$dane3[0];
          $dane3[3]=$dane3[1];
          $dane3[0]=$data2;
          $dane3[1]=1;
          $miesiac=fopen("js/miesiac.txt","w");
          flock($miesiac, 2);
          fwrite($miesiac, "$dane3[0]:$dane3[1]:$dane3[2]:$dane3[3]", 30);
          flock($miesiac, 3);
          fclose($miesiac);
        }
        }
        else
        {
                $plik = fopen("js/licznik.txt", "r");
                $tekst = fread($plik, filesize("js/licznik.txt"));
                $dane = explode(";", $tekst);
                fclose($plik);

                $dzienny=fopen("js/dzienny.txt","r");
                $dzienny_tekst =fread($dzienny, filesize("js/dzienny.txt"));
                $dane2 = explode(":", $dzienny_tekst);
                fclose($dzienny);
                
                $miesiac=fopen("js/miesiac.txt","r");
                $miesiac_tekst =fread($miesiac, filesize("js/miesiac.txt"));
                $dane3 = explode(":", $miesiac_tekst);
                fclose($miesiac);
        }
?>
<center>
<div class="licznik">
<table width="100%" cellpadding=0><tr>
<td width="80px"><img src="obrazki/futsal1.png" width=80 height=90/></td>
<td>
<table width="150px" cellpadding=0><tr><td colspan=2 style="text-align:center"><font size=+1><center>Licznik odwiedzin:</center></font></td></tr>
<tr><td style="text-align:left" width="100">Dzisiaj:</td><td style="text-align:right"><b><?php echo($dane2[1]); ?></b></td></tr>
<tr><td style="text-align:left" width="100">W tym miesiącu:</td><td style="text-align:right"><b><?php echo($dane3[1]); ?></b></td></tr>
<tr><td style="text-align:left" width="100">Wszystkich:</td><td style="text-align:right"><b><?php echo($dane[0]); ?></b></td></tr></table></td></tr></table></div></center>
</body></html>



I niby wszystko pieknie wyglada ale niestety jest duuuzy problem z dzialaniem tego licznika, a mianowicie:
Gdy wejdę na stronę i zaczne trzymac F5(odswiezanie) to licznik wariuje: resetuje sie losowa liczba w pliku txt ktory tez jest losowy. Raz resetuje sie w dziennym, raz w miesieczny, a jeszcze kiedy indziej w ogolnym. Ale nie psuje sie tylko na F5 zauwazylem ze jak juz jest troche duzo odwiedzin to sie resetuje. czasem jest tak ze mam dzienny: 1500 a ogolny sie resetuje i jest np. 10.

Czy może mi ktoś doradzić, co musze zmienic w tym kodzie zeby prawidlowo dzialal i nie robil takich numerów??

Z góry dziękuję za pomoc
Go to the top of the page
+Quote Post
emajl22
post 12.02.2011, 18:53:19
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


sesje?


--------------------
Go to the top of the page
+Quote Post
qarles
post 12.02.2011, 19:08:05
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


czyli co dokladnie?? bo niezbyt zrozumialem
Go to the top of the page
+Quote Post
Tomplus
post 12.02.2011, 19:11:57
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie możesz zapisywać tego do bazy danych ?
Z sumujesz sobie potem odpowiednią przestrzeń dat np. wg. miesiąca, roku, sumy.

Możesz to zrobić nawet tak jak Ty masz:



nazwy kolumn tabeli _> dzien miesiac rok ogolny id data_aktualizacji
Updatujesz tylko jeden wiersz tabeli tylko każda z aktualną wartość +1
  1. UPDATE licznik SET dzien=dzien+1, miesiac=miesiac+1,rok=rok+1,ogolny=ogolny+1 WHERE id = 1;


Potem tylko sprawdzasz który dzien już jest:
i umieszczasz IF który resetuje tylko daną wartość
np. dzien = 0

Go to the top of the page
+Quote Post
qarles
post 12.02.2011, 19:16:02
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


wiem ze moznaby bylo na bazie danych, ale jesli o to chodzi to ja jednak wolalbym to miec na plikach txt i dlatego wlasnie napisalem z zapytaniem o to co tutaj moze powodowac to resetowanie...
Go to the top of the page
+Quote Post
Tomplus
post 12.02.2011, 20:06:49
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Jeżeli się tak dzieje jak Ty mówisz, to po sprawdzałbym sobie dane które zapisujesz do pliku.
Jakie dane i kiedy są false.

Pewnie jakaś zmienna nie dostaje wartości.
Go to the top of the page
+Quote Post
qarles
post 12.02.2011, 20:12:26
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


tylko ze tu nie ma dokladnie kiedy... bo rozne zmienne w roznym czasie chyba dostaja false i dlatego idzie reset i nie wiem od czego zalezy kiedy on sie resetuje i jak naprawic
Go to the top of the page
+Quote Post
Tomplus
post 12.02.2011, 21:15:08
Post #8





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


To dlatego musisz sprawdzić co wchodzi i co wychodzi.
Go to the top of the page
+Quote Post
qarles
post 12.02.2011, 23:06:27
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


juz kilka razy sprawdzalem i wyglada to calkiem wporzadku...

czy kktos jeszcze moze cos doradzic?? a jeśli nie to pomógłby mi ktoś napisać ten cały licznik (ogolny dzienny i miesieczny) w oparciu o mysql bo w temacie z mysqlem sie niezbyt pewnie czuje...
Go to the top of the page
+Quote Post
Pilsener
post 13.02.2011, 00:51:16
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Licznik tekstowy zawsze będzie wątpliwie działał jeśli czas wysyłania żądań przekroczy czas zapisu do pliku smile.gif Pliki są fajne przy szybkim odczycie, przy zapisie odwrotnie.
Licznik odsłon to żadna filozofia, zapisujesz do bazy ip +czas a potem na podstawie tego co jakiś czas generujesz statystyki, skryptów na różne liczniki jest masa, wystarczy poszukać:
Temat: Scalenie zapytan i optymalizacja skryptu - tylko używać na własne ryzyko smile.gif Dzisiaj się używa zewnętrznych statystyk.
Go to the top of the page
+Quote Post
qarles
post 13.02.2011, 13:06:57
Post #11





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.10.2010

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


OK. Dzięki za link do tematu coś będę kombinował... Bo może rzeczywiście lepiej bedzie na baze:D

A mam jeszcze takie pytanie: Jak poustawiałeś pola w tabelach??
Chodzi mi o: ip, czas, osłon, wizyt

Ten post edytował qarles 13.02.2011, 13:55:49
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: 15.06.2025 - 13:36