Hallo Christian,
Nun, Perl an sich macht auch ein Problem. Es ist
schliesslich nicht beliebig billig, den Perl-
Interpreter zu starten, das Script zu parsen und
dann auch noch auszufuehren.
aber dieses Problem würde sich ggf. auch ohne
Reimplementierunug des Forums lösen lassen
(mod_perl, mod_fastcgi?)
Das neue Forum soll diese Probleme lösen:
a) Es soll ein neuer, selbst geschriebener (einfacher,
aber schneller) XML-Parser entstehen,
Ehm, da hast du was missverstanden ...
Der XML-Parser kann beliebig langsam sein: ich
starte den Forums-Prozess doch nur ein einziges
mal, danach ist alles im Hauptspeicher.
Au ja, natürlich.
Dieser daemon serialisiert dabei alle
Anforderungen,
Nein. Eine Serialisierung waere ja fuerchterlich
lahmarschig.
Wenn die Clients über ein socket mit dem daemon reden,
dann serialisiert das ja automatisch.
Und wenn die gegenseitige Ausschlußphase dadurch,
daß nun alles im RAM liegt und viel schneller
adressierbar ist, nun sehr kurz wäre, würde es auch
schon erheblich schneller - ohne daß Du dafür ein
eigenes Locking-System erfinden müßtest.
Jeder Thread setzt einen Write-Lock auf die
Struktur, mit der er gerade arbeitet: lesende
Zugriffe sind also weiterhin moeglich.
Obwohl schreibende Zugriffe auch die Hauptdatei
ändern?
Daß Deine Lösung die bessere (und intellektuell
anspruchsvollere) ist, davon mußt Du mich nicht
überzeugen. ;-)
Fuer lesende Zugriffe auf die Haupt-Datei existiert
ausserdem noch ein Cache: die komplette
Serialisierung der Forums-Hauptdatei, die ja noetig
ist, um die Liste durch den Socket zu schicken, ist
schon im Hauptspeicher fertig zusammengestellt.
Ah - das ist der Trick: Quasi ein Transaktions-
mechanismus beim Posten und eine "alte" Sicht auf
die Hauptdatei mit hochperformantem Zugriff.
und es sind keinerlei gegenseitigen Sperren mehr
notwendig,
Doch, sind sie. Aber nur sehr kleine.
Mit Serialisierung wären sie ganz überflüssig gewesen.
Aber Dein Mechanismus ist bestimmt der bessere.
damit würde nicht nur das Posten, sondern ggf. auch das
Lesen schneller werden bzw. den Server weniger belasten.
In erster Linie optimiere ich das Forum auf lesende Zugriffe.
Das wäre jetzt die Stelle, um mal das Verhältnis
zwischen lesenden und postenden Zugriffen zu nennen ...
Aber auch das Posten duerfte wirklich schneller
werden, ja.
Und vor allem die lästige Meldung, daß man gerade
nicht posten darf, müßte völlig verschwinden.
sich nichts aufhängen usw. - wenn der daemon kaputt gehen
sollte, wäre das gesamte Forum lahm gelegt und müßte
manuell neu gestartet werden.
Nicht nur das, noch viel schlimmer: wenn der Forums-Server
sich aufhaengt und noch nicht alle neuen Postings geschrieben
wurden, kann es durchaus auch zu Datenverlusten oder
Inkonsistenzen kommen. Und das waere wirklich fatal.
Schreibt das neue Forum ab und zu (stündlich?) einen
checkpoint, um im Falle eines Crashs mit minimalem
Datenverlust wieder auf die Füße zu fallen?
Bisher enthaelt aber der Forums-Source noch relativ viele
Plattformabhaengigkeiten (vor allem in der Makefile). Und ich
glaube nicht, dass das Forum jemals auf einem Windows-Rechner
laufen wird.
Ich denke, es ginge dabei eher um diverse UNIX-
Plattformen, aber für Benutzer ohne shell-Zugang.
Viel Erfolg beim Programmieren
Michael