Thread Board-rewrite: allgemeine Ideen
(44 answers)
Opened by jan10001 at 2003-08-25 00:08
@esskar: ja, da kann man auch wunderbar mit C Zugriffe auf die Apache-API schreiben; aber ich befuerchte, da gibt es schon genuegend fuer uns. C koennte jedoch am Ende der Hauptentwicklung beim Tuning (auslagern des Codes einiger Funktionen/Module in C) mit ins Spiel kommen... aber ich denke, der Start sollte mal Pure Perl sein.
@jan: so ein caching ueber's Dateisystem koennte spaeter wirklich mal Sinn machen (muss mir mal den tux naeher anschauen); aber das wuerde ich zunaechst mal gerne zurueckstellen Ich bin schon sehr stark fuer mod_perl, weil das einfach sehr schnell ist (so 5-50x), und man fast alle Moeglichkeiten des Apache verwenden kann. Die Umstellung von CGI ist eigentlich nicht so wild. Hier habe ich mal skizziert, wie man das mit der Config und den Plugins machen koennte: BoardConf.pm Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package BoardConf; use strict; use warnings; use vars qw(%Actions); # Program logic is defined here %Actions = ( start => { subs => [ &BasicFunctions::WriteStandardHtmlHeader, &BasicFunctions::WriteLogonPage, &BasicFunctions::WriteStandardHtmlFooter, ], }, # start logonUser => { subs => [ &BasicFunctions::WriteStandardHtmlHeader, &BasicFunctions::ValidateUser, &BasicFunctions::WriteStandardHtmlFooter, ], }, # logonUser # ... ); # %Actions # ------------------------------------------------------------ 1; # modules have to return a true value BasicFunctions.pm Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package BasicFunctions; use warnings; use strict; # ------------------------------------------------------------ sub WriteStandardHtmlHeader { my $r = shift; } # WriteStandardHtmlHeader # ------------------------------------------------------------ sub WriteStandardHtmlFooter { my $r = shift; } # WriteStandardHtmlFooter # ------------------------------------------------------------ sub WriteLogonPage { my $r = shift; } # WriteLogonPage # ------------------------------------------------------------ # ... # ------------------------------------------------------------ 1; # modules have to return a true value Und das Hauptprogramm (den Haupthandler): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #! /usr/bin/perl use warnings; use strict; sub handler { my $r = Apache::Request->new(shift); $r->send_http_header('text/html'); my $action = $r->param('action') || 'start'; unless ( exists $BoardConf::Actions{$action)->{subs} ) { $action = 'start'; # error } # unless foreach my $sub (@{ $BoardConf::Actions{$action}->{subs} }) { unless ($sub->($r)) { # error in sub last; # errorhandling } # unless else { # ok } # else } # foreach } # handler waere sowas flexibel genug?\n\n <!--EDIT|Strat|1061829032--> perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |