Aloha!
kleine frage: wie geht Ihr mit flatfile-dbs um?
Ich habe bislang für mehr oder weniger umfangreiche Datenbanken immer Datenbanksysteme verwendet.
Einzig für ein wirklich winziges "Problem" habe ich IMHO eine trickreiche Lösung gefunden:
PHP erzeugt den Code, der später mit include() eingebunden wird, selbst. :)
Hintergrund: Ein kleines "Newssystem" sollte ermöglichen, gewisse Newsseiten freizuschalten, und eine der Newsseiten als Teaser zu definieren (das ganze ist unter http://www.rb3m.com/news/ zu sehen - und noch nicht wirklich ausgereizt. :) ).
Da ich mir irgendwo merken muß, welche News freigeschaltet sind und welche Nachricht als Teaser fungiert, habe ich die entsprechenden Variablen ganz einfach in eine PHP-Datei geschrieben.
Der relevante Code-Teil (Dateipfade sind gekürzt):
foreach ($HTTP_POST_VARS['frei'] as $page)
{
$zustand[$page]='on';
}
$fp = fopen("zustand.php","w");
flock($fp,2); # File locked
fputs($fp,"<?php $zustand = unserialize("".addslashes(serialize($zustand)).""); $tease = "".$HTTP_POST_VARS['tease'].""; ?>");
flock($fp,3); # File unlocked;
fclose($fp);
Damit wird als Resultat folgende Zeile in die Datei zustand.php geschrieben (je nach Freischaltzustand natürlich):
<?php $zustand = unserialize("a:2:{s:13:"20020716.html";s:2:"on";s:13:"20020712.html";s:2:"on";}"); $tease = "20020716.html"; ?>
Auf diese Weise wird später die Datei einfach mit include("zustand.php") wieder eingebunden, und das Array $zustand sowie die Variable $tease sind danach verfügbar.
Die Alternative wäre natürlich, jeden Arrayeintrag separat in der Datei abzuspeichern (als Konfigurations-Include-Datei auch sehr zu empfehlen):
<?php
$zustand[1]="wert1";
$zustand[2]="wert2";
...
?>
Da PHP auch Session-Variablen mit serialize() und unserialize() aus der Textdatei liest und in sie schreibt, denke ich, dass dieses Verfahren hinreichend schnell ist, um für kleine Datenspeicherungen auszureichen.
- Sven Rautenberg