Witam.
Na mojej stronie internetowej od dłuższego czasu używam skryptu PHP, który ma za zadanie pokazać ile razy ściągnięto jakiś plik z serwera.
Nazywa sie u mnie download.php i wygloda tak:
<?
$filename = 'counter_' . $_GET['file'] . '.txt';
if (file_exists($filename))
{
$fp = fopen($filename, 'r');
$count = fgets($fp, 4096);
$count += 1;
fclose($fp);
$fp = fopen($filename, 'w');
flock($fp, LOCK_EX);
fputs($fp, $count);
flock($fp, LOCK_UN);
fclose($fp);
}
header ('Location: http://adresmojejstrony/projekty/' . $_GET['file']);
?>
Dla każdego pliku, który udostępniony jest do ściągnięcia tworzony jest plik tekstowy, ktorego nazwa jest skladową wyrazu "counter_" oraz samej nazwy ściąganego pliku.
Skrypt wywołuję poleceniem (w sekcji BODY strony download.html):
<?
function GetCount($file)
{
$filename = "counter_$file.txt";
if (file_exists($filename))
{
$fp = fopen($filename, 'r');
$count = fgets($fp, 4096);
fclose($fp);
return $count;
}
else
{
$nie = '0';
return $nie;
}
}
?>
Wynik wyświetlam w taki sposób:
Czyli plik taki a taki pobrano n razy.
Wszystko jest OK, ale co jakis czas pliki tekstowe zerują się! Dlaczego? Jak temu zapobiec? Czy jest możliwe, że np. z powodu nieodpowiedzi serwera plik jest zerowany? Prosze o przeanalizowanie tego przykładu i jakieś podpowiedzi, jak zmodyfikować ten skrypt, aby nie działy sie takie cuda. Bo dochodzi do sytuacji, ze np. w poniedziałek mam 60 ściągnięć, a we wtorek nic!
Bardzo proszę o pomoc.
Pozdr
Pepe
Ps: aha, serwer to piwko.pl ( ;( ) , więc tylko php, żadne mysqele nie wchodzą w grę...