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:
<?php
$czytaj_l++;
?>
zmienic na:
<?php
if(is_numeric($czytaj_l)){$czytaj_l++;}else{$czytaj_l=1;} ?>
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:
<?php
$plik = "index/licznik.dat";
$fop = @fopen("$plik", "r"); $czytaj_l = @fread($fop, $waga);
$czytaj_l++;
$fop = @fopen("$plik", "w");
}
?>
Blad zerowania powstaje glownie wtedy gdy jedna inwokacja chce odczytac wartosc licznika podczas gdy druga zapisuje.
pozdr.