hi,
@hotti
Zu Perl: Angenommen ich bau mir wirklich ür jeden Login - oder besser gesagt für jeden Kunden, der sich registriert und einloggt, einen eigenen Ordner mit Unterdatei(en).Spinnen wir mal diesen Gedanken weiter:
Wie sieht es bei 10'000 Kunden aus. Bei 1 Mio Kunden? Bei 10 Mio. Kunden?
Keine Ordner, klarer Fall für eine DB! Die Kundendaten samt PasswortHashes gehören in eine DB und wenn der Index auf dem richtigen Feld sitzt, liegt die Dauer einer Abfrage (z.B. Login) auch bei mehreren Mio Kunden im Millisekundenbereich. Kundendaten im FS ist völlig indiskutabel.
Bleiben wir mal beim Login (Kunde ist bereits registriert): K gibt 'user/pass' ein, die Abfrage über die Kundentabelle sei ok. Du brauchst jetzt eine zweite Tabelle zum Speichern der aktuellen Logins, in dieser Tabelle stehen nur die aktuellen Logins, nicht jedoch _jede_ Browsersitzung. Auch diese Tabelle sollte performant zu befragen sein, denn die Abfrage, ob ein K. eingeloggt ist, kommt bei jedem Request.
Alle Prozesse, die auf Kundentabelle und Logintabelle zugreifen, müssen atomar sein (vom Lesen bis zum Beschreiben).
Mit dem Perl-Modul Benchmark und eingeschalteten profiling (mysql) kannst Du solche Sachen während der Entwicklung prima testen.
Andererseits, wenn es nur eine Handvoll Benutzer für Logins gibt (z.B. Content-Manager, Shop-Master) ist eine Lösung über Dateien durchaus auch sinnvoll, solche Manager-Accounts sind ohnehin klar getrennt von Kundendaten und brauchen auch weniger Datenfelder (Benutzername, Gruppe, PasswortHash). Es gibt Perl-Module als Interface für Passwortdateien...
Vom Dateisystem wird der SourceCode geladen, Templates sind ebenfalls im FS besser aufgehoben, als in einer DB oder Binary. Wenn bei einem Request z.B. ein Script plus 2..10 Moduldateien geladen werden, musst Du nicht befürchten, dass beim zusätzlichen Laden eines Templates aus dem FS die Performance einbricht ;)
Ein Framework mit Perl zu schreiben, macht Spaß, guck, dass Du das mit mod_perl oder als FastCGI machen kannst. Weitere Laufzeitoptimierungen gibt es mit SelfLoader und AutoLoader, für Methoden, die nicht bei jedem Request gebraucht werden: Die werden erst auf Anforderung compiliert wobei die Source entweder aus dem FS oder aus dem RAM geladen wird. Der Code fürs Login wäre z.B. solch ein Kandidat...
Hotti