હેલો
$_mtst = utf8_encode( strftime("%d.%m.%Y", $_timestamp) ) . '_' . $_timestamp;
Die UTF-8-Kodierung ist nicht notwendig. Oder erwartest du Zeichen jenseits von ASCII im Datum?
Ich hatte vor Jahren mal ein Kodierungs-Problem mit der Ausgabe von Timestamp (MySQL), wenn ich die Zeitzone auf Deutschland gestellt hatte. Durch das Explizite kodieren war das Problem behoben. Seitdem mache ich es einfach so.
ini_set('date.timezone','Europe/Berlin');
setlocale(LC_ALL, 'de_DE','deu_deu'); // das hier verursachte, wenn ich mich recht erinnere, die Probleme
Mach es nicht zu umständlich. file_put_contents() kann Dateien erzeugen und es kann auch an vorhandenen Dateien anhängen. Also file_put_contents($datei, $daten, FILE_APPEND); reicht bereits.
Wenn alles glatt geht, musst du die Datei nicht aufheben. Und wenn du das doch willst, dann nimm move() und nicht copy+unlink.
Also irgendwann, irgendwann, gebe ich dir aber sowas von'nem Bier aus, oder 2 ;)
Neue Funktion:
/**
* Funktionsaufrufe mitloggen
*/
define('TEMPNAME', tempnam("./tmp", "script_log"));
$_actual_timestamp = time(); // Zeit des ersten Seitenaufrufes festhalten
/**
* script_log (script_log ('config.php', $_actual_timestamp, __LINE__, __FILE__);)
*/
function script_log ($_function, $_timestamp, $_line, $_file, $_move=false)
{
// Status-Text
$_ret = sprintf('%1$s, Function: %2$s, Line: %3$s, File: %4$s' . "\n"
, strftime("%d.%m.%Y, %H:%M:%S", time())
, $_function
, $_line
, $_file
);
$_text = $_ret;
// Datei erzeugen; falls vorhanden, Daten anhängen
if (file_exists(TEMPNAME)) {
$_text = file_get_contents(TEMPNAME);
$_text .= $_ret;
}
file_put_contents(TEMPNAME, $_text);
// Scriptende, Datei mit Zeitstempel ins Archiv verschieben, wenn es einen Fehler vorher gab
if ($_move) {
rename(TEMPNAME, './tmp/archive/' . strftime("%d.%m.%Y.%H.%M.%S", $_timestamp) . '_' . $_timestamp . '.log');
}
}
Habe es jetzt auch in die AJAX-Requests eingebaut.
બાય
.
..: