![]() |
![]() ![]() |
![]() |
![]() ![]()
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 -------------------- EnigmaCretu.Com >>
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.11.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat mi kiedys to pomoglo Znów dziś mi się sam wyzerował licznik mimo, że zrobiłem jak mi tu poradzono :-( Cytat jak to nie pomoze to daj echo co jakis czas zeby zobaczyc co sie dzieje ze zmienna Sprawdziłem i zmienne zachowują się w prawidłowy sposób.... Czy to nie może być skutkiem tego, że serwer robi automatycznie co jakiś czas backup? (dodam, że stronę mam na płatnym serwerze). Dlaczego mimo zastosowania funkcji flock() ten problem występuje? Szczerze mówiąc dziwne to wszystko, zwłaszcza że skrypt licznika jest tak banalny, że ciężko byłoby się w nim pomylić... Pozdrawiam -------------------- EnigmaCretu.Com >>
|
|
|
![]()
Post
#4
|
|
![]() 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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(*_ENIGMA @ 2005-10-03 15:38:35) Witam! Otórz mam na stronie licznik odwiedzin i już drugi raz sam się wyzerował (plik z liczbą odwiedzin stał się pusty) :-/ Też tak miałem i zębami zgrzytałem. Ale doszedłem do przyczyny. Winne jest otwieranie pliku w trybie "w". Zauważ, że zawartość pliku jest wtedy kasowana. Już wtedy, a więc jeszcze przed próbą założenia locka! Ja doszedłem w końcu do tego co widać niżej. Zrób tak, a bedzie dobrze:
latet Ten post edytował latet 4.10.2005, 22:34:01 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 21:32 |