MyBB.de Forum

Normale Version: PHP Config Datei erstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bin dabei ein Script zu schreiben, allerdings sollen simple Einstellungen in einer config.php Datei gespeichert werden, Posts etc. in der Datenbank.

In der config Datei sind z.B. folgende Einträge:
PHP-Code:
$settings['bgcolor'] = "#669900";
$settings['bgcolor_book'] = "#669933";
$settings['width_book'] = "650";
$settings['bgcolor_o'] = "#DDB64B";
$settings['bgcolor_entry'] = "#fff";
$settings['color'] = "#fff"
usw...

Im Admincp sollen die Einstellungen gespeichert werden können. Klar ist, dass die Datei die Rechte dazu braucht (CHMOD).
Dann würde ich die Datei per fopen öffnen.
Wie kann ich ihm nur sagen, dass der bestimmte Stellen der Datei ändern soll, weil wenn er immer die ganze Datei neu schreiben würde könnte das ja ziemlich lange dauern.

Vielen Dank
mfg
Kurze Antwort:
Geht nicht. Schreib die ganze Datei neu.

Lange Antwort:
Du kannst die Datei zwar in place mit seek() und write() überschreiben, nur gibt es da 2 Probleme. Zum einen musst du die richtige Stelle finden, d.h. erstmal doch die ganze Datei lesen. Zum anderen müssen, sobald sich die Länge eines Strings ändert (z.B. von "#fff" auf "#f6f5f4"), alle nachfolgenden Bytes in der Datei nach hinten verschoben werden, d.h. die Datei muss zumindest ab dieser Stelle neu geschrieben werden. Daher ist es in der Regel einfacher sich diese ganze Logik zu sparen und gleich die ganze Datei zu schreiben auch wenn es theoretisch nicht notwendig gewesen wäre.

Deine Bedenken zum ziemlich lange dauern kann man insofern zerstreuen, als daß der physikalische Schreibvorgang ja nur zeitversetzt geschieht. Durch den Dateisystemcache bekommst du sofort ein "ok" zurück, tatsächlich geschrieben wird dann irgendwann später. Wenn der Schreibvorgang zudem nur stattfindet, wenn jemand etwas im Admin CP ändert, also fast nie, ist es eh vollkommen egal wie lange das dauert.
Ich würde an deiner Stelle die ganze Datei neu schreiben. Das kann nicht lange dauern und ist am wenigsten Aufwand.
Vielen Dank. Dann werde ich das so machen.
mfg