![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.11.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Otórz mam na stronie licznik odwiedzin i już drugi raz sam się wyzerował (plik z liczbą odwiedzin stał się pusty) :-/ Podaję swój skrypt, bo ja już nie wiem gdzie leży przyczyna :-/ CHMOD mam ustawiony pliku z wpisami licznika (licznik.dat) na 777. Plik licznik.php (inkludowany: @include("index/licznik.php"); )
Proszę o podpowiedzi jaka może być przyczyna samoistnego zerowania się tego licznika... Najciekawsze jest to, że dałem blokadę flock() do zapisu i odczytu a i tak się wyzerował :-/ Pozdrawiam Ten post edytował *_ENIGMA 3.10.2005, 16:40:52 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Samoistne generowanie sie licznika jest zwiazane z nastepujaca sytuacja: Gdy zablokujesz za pomoca flock dostep do pliku najczesciej inna inwokacja skryptu nie moze odczytac jego wartosci, odczytuje wiec wartosc 0, ktora nastepnie inkrementuje. W tym samym czasie pierwsza inwokacja dokonuje zapisu i zdejkmuje blokade a druga inwokacja jest zablokowana z zapisem do chwili odblokowania zapisu. Po odblokowaniu sie zapisu wpisuje wartosc jaka zna wiec 1 lub ciag pusty. Ciag pusty dlatego, ze inkrementacja niczego daje w efekcie nic. Proponuje na sam poczatek zdjecie malpek aby zobaczyc czy nie ma zadnych bledow. Po drugie proponuje linijke:
zmienic na:
Wten sposob jesli nastapi bledny odczyt wartosci licznika to zostanie wpisana 1 - wiec od zerowania bedzie dobrze zliczal. Jednak podejrzewam, ze chcesz unikanac zerowania. W tym celu mozna zrobic tak - jesli blednie odczyta to nie zapisywac. Oto kod po zmianach:
Blad zerowania powstaje glownie wtedy gdy jedna inwokacja chce odczytac wartosc licznika podczas gdy druga zapisuje. pozdr. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 04:52 |