Hello,
Ein sehr schönes Klickscript mit Statistikfunktion findest Du hier:
Dieses Script ist tatsächlich sehr schön daneben...
if($fd = fopen($LOG_FILE_PATH, "r+")) {
//lock access
flock($fd, 1);
##+ Locking wartet bis zum Erfolg oder Timeout des Scripts
//get the entire file contents
while(!feof($fd)) {
$data .= fgets($fd, 8000);
}
$QS2 = preg_replace("|?|", "?", $QS);
//echo $QS . "<br>" . $QS2;
if(preg_match("|<tr><td class="DataTD"><a href="$QS2">$QS2</a></td><td class="DataTD">(.*)</td></tr>\n|", $data, $matches)){
//we are already tracking this one
$count = $matches[1];
$count++;
$CountReplacementStr = "<tr><td class="DataTD"><a href="$QS">$QS</a></td><td class="DataTD">" . $count . "</td></tr>\n";
$data = preg_replace("|<tr><td class="DataTD"><a href="$QS2">$QS2</a></td><td class="DataTD">.*</td></tr>\n|", $CountReplacementStr , $data);
}
else{
$data = preg_replace("|<!--INSERT_NEW_LOGS_HERE-->|", "<!--INSERT_NEW_LOGS_HERE-->\n<tr><td class="DataTD"><a href="$QS">$QS</a></td><td class="DataTD">1</td></tr>\n", $data);
}
fclose($fd);
##+ Handle wird hier zurückgegeben, damit erlischt auch das Lock
$fd = @fopen($LOG_FILE_PATH, "w+");
##+ hier wird ein neues Handle angefordert, aber keine Fehlerkontrolle durchgeführt und auch
##+ kein neues Lock angefordert und geprüft
##+ das ergibt eine typische Kontroll-Lücke oder auch "Race Condition"
##+ weitere Bemerkungen vorbehalten
fputs($fd, $data);
fflush($fd);
flock($fd, 3);
fclose($fd);
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau