Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z licznikiem
Forum PHP.pl > Forum > Gotowe rozwiązania
Gniewko
Mam nieznany mi problem z licznikiem opartym na plikach. Skrypt licznika:

  1. <?php
  2. $count_arr = file('counter_all');
  3. $count = trim($count_arr[0]);
  4.  
  5. if($_COOKIE['counter'] == 'yes')
  6. {
  7. $count_all = $count;
  8. }
  9. else
  10. {
  11. setcookie('counter', 'yes', time()+(60*60*24));
  12. $count_all = $count+1;
  13.  
  14. $file_counter = fopen('counter_all', 'w');
  15. flock($file_counter, LOCK_EX);
  16. fputs($file_counter, $count_all);
  17. flock($file_counter, LOCK_UN);
  18. fclose($file_counter);
  19. }
  20. ?>


Problem polega na tym, że co jakiś czas licznik się kasuje. Ma dzień wcześniej jakąś wartość, a na drugi dzień, jakby naliczał od nowa. No jestem pewien, że to z powodu czyiś ustawień w przeglądarce, które są w stanie mi nadpisać plik z nieprawidłową wartością.

I mój problem, czyli jak uniknąć takiego błędnego zapisywania, lub chociaż jakie to są ustawienia w przeglądarce które wszystko psuja?
Chewolf
Bardzo często taki problem jest przy stronach na których jest duży ruch ... Choć używasz blokania plików więc coś takiego nie powinno zaistnieć... Przy bazach danych nie ma takich problemów ;-)
Spróbuj tak:
  1. <?php
  2. $count = join(file('counter_all'));
  3. if($_COOKIE['counter'] == 'yes'){
  4.     $count_all = $count;
  5. }
  6. else{
  7.     setcookie('counter', 'yes', time()+(60*60*24));
  8.     $count_all = $count+1;
  9.  
  10.     $file_counter = fopen('counter_all', 'w');
  11.     flock($file_counter, LOCK_EX);
  12.     fputs($file_counter, $count_all);
  13.     flock($file_counter, LOCK_UN);
  14.     fclose($file_counter);
  15. }
  16. ?>
Gniewko
No coż. Spróbuje...

To jak to jest z tym blokowaniem, blokuje czy w końcu nie? Skoro to jest częsty błąd, może coś z tym zrobic?
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.