Thread [PHP] mehrfaches Schreiben in eine Logdatei bei mehreren gleichzeitigen Zugriffen?
(9 answers)
Opened by Gast at 2008-10-28 14:23 Gast+2008-10-28 17:54:38-- Vielen dank für den Linkhinweis. Nein, ich wusste davon nichts, habe es nur vermutet, allerdings ohne Beweis. Nun weiss ich zwar immernoch nichts genaues, habe aber auf der Seite in den Codebeispielen die ein Beispiel (Klasse: SafeWriter) für verzögertes Schreiben im Falle einer gesperrten Datei gefunden. Da ich Klassenprogrammierung nicht kenne habe ich eine normale Funktion daraus gemacht, eingebunden und schreibe nun so das log: Code: (dl
)
writeLog("log-datei.log","a+", $datum."\n".$APO."\n"); Die Funktion sieht so aus: [php]<?php // suggested mode 'a' for writing to the end of the file function writeLog($path, $mode, $data) { $fp = fopen($path, $mode); $retries = 0; $max_retries = 30; if (!$fp) { // failure return false; } // keep trying to get a lock as long as possible do { if ($retries > 0) { usleep(rand(1, 10000)); } $retries += 1; } while (!flock($fp, LOCK_EX) and $retries <= $max_retries); // couldn't get the lock, give up if ($retries == $max_retries) { // failure return false; } // got the lock, write the data fwrite($fp, "$data"); // release the lock flock($fp, LOCK_UN); fclose($fp); // success return true; } ?>[/php] Sehe ich das richtig, das, falls das Script (innerhalb der index.php) von 2 Browsern gleichzeitig aufgerufen wird und eine Instanz die log-datei sperrt, die andere Instanz des Scriptes einfach solange wartet, bis es die log-datei entsprerrt vorfindet und dann schreibt? //Modedit GwenDragon: PHP-Code in PHP-Boardtags gestellt |