Cytat
Nic nie chce osiagnac tylko obejsc blad ktorym jest wariowanie parsera poniewaz jesli dostep do pliku nastepuje dwukrotnie (i tutaj nie pomoze flock uwierz mi) wlasnie parser glupieje i domyslnie wstawia 0.
Widzę, że cie nie przekonam, że flock załatwi sprawę. W takim razie sama będziesz musiała to sprawdzić. Użyj ApacheBench - fajne narzędzie do sprawdzania jak zachowuje się skrypt pod obciążeniem, dostarczane razem z serwerem Apache (ab.exe w folderze bin). Zasymuluj 100 użytkowników wykonujących przynajmniej 50000 rządań takim poleceniem
Kod
ab.exe -n 50000 -c 100 localhost/test_licznika.php
Przetestuj tym sposobem kod z forum KS, oraz mój kod:
<?php
{
$fp = fopen( "licznik.txt", "w+" ); }
else
{
$fp = fopen( "licznik.txt", "r+" ); }
// Powyższe linijki można zastąpić jedną:
// $fp = fopen( "licznik.txt", "c+" );
$licznik = fread( $fp, 4096
);
?>
i sprawdź jaka liczba pojawi się w pliku licznik.txt
Jeśli kod z funkcją file_put_contents( "plik.txt", $wartosc, LOCK_EX ) nie daje poprawnego wyniku, to znaczy, że funkcja ta została źle napisana (Blokada jest nakładana przed zapisem,
ale po wyczyszczeniu zawartości pliku, więc nie należy na niej polegać w 100%. Cóż, uroki PHP...)