Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odporny licznik
Forum PHP.pl > Forum > Gotowe rozwiązania
yesomaniak
Otóz mam pewnien kłopot. Liczniki które kiedys napisalem (dzienny i totalny) sprawowaly sie doskonale az do czasy kiedy liczba gosci zaczela przekraczac 2 tys dziennie. Obecnie gdy ruch na witrynie wynosci ponad 3 tys na dobe oba zupełnie niezaleznie (choc napisane troche inaczej) i losowo potrafia po prostu sie wyzerowac i to nawet kilka razy dziennie aby znów przez 2-3 dzialac bezbłednie do czasu nastepnego padu... Przyznacie ze to troche dobijajace Cóz moze byc tego przyczyna? Czyzby dwaj uzytkownicy otworzyli plik dokladnie w tym samym momencie w dokladnoscia do tysiecznej czesci sekundy i spowodowali bład? A moze po prostu liczniki tekstowe maja taki urok?


[php:1:0e1de57019]<?php


setcookie('adonaig', '1', time()+600);

if($adonaig!="1") {

$counter_file_line = file('counter2');
$counter_file_line[0] = $counter_file_line[0]+1;

$cf = fopen('counter2', "w");
flock($cf,2);
fputs($cf, "$counter_file_line[0]");
fclose($cf); }

$counter_file_line = file('counter2');

$cf = fopen('counter2', "r");
flock($cf,2);
$ile1=fgets($cf, "$counter_file_line[0]");
fclose($cf);

$dzien = date("d.m.Y");
if(file_exists(''.$dzien.'.txt'))
{
$file=fopen(''.$dzien.'.txt', "r");
flock($file, 1);
$ile2=fgets($file, 8);
flock($file, 3);
fclose($file);
if($adonaig!="1")
{ $ile2++; }}
else {
$ile2=1; }
$file=fopen(''.$dzien.'.txt', "w");
flock($file, 2);
fwrite($file, $ile2);
flock($file, 3);
fclose($file);
?>[/php:1:0e1de57019]
mhs
jeżeli masz możliwość to może przy takiej ilości odwiedzin na dobę pasowałoby wykorzystać tutaj bazę danych i przy okazji spisywać dodatkowe informacje o użytkownikach (np. z przeglądarki jakiej korzystają, daty i czas odwiedzić) - późniejsze wybieranie danych będzie o wiele łatwiejsze niż przy plikach
yesomaniak
No coz praktycznie sam sobie odpowiadam ale pragnę poinformować
iz zamienilem na inny skrypt i narazie liczniki dzialaja wyśmienicie!

Oto nowy kod moze ktos skorzysta:

[php:1:117e74480d]<?
$fp = fopen('counter.dat', "r+");
flock($fp, 1);
$count = fgets($fp, 4096);

if($adonaig!="1") { $count += 1; }
fseek($fp,0);
fputs($fp, $count); flock($fp, 3);
fclose($fp);<?php

?>[/php:1:117e74480d]
kicaj
mialem podobny problem, ale na bazie!
Byl to licznik online, i juz 3x padl, nie wiem czego to jest przyczyna ;/
b3
Cytat
mialem podobny problem, ale na bazie!
Byl to licznik online, i juz 3x padl, nie wiem czego to jest przyczyna ;/


zapewne gdzies:) w... zapytaniach do bazy... ?!
kicaj
no najprostrze zapytania jakie maga byc
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.