Thread Board-rewrite: allgemeine Ideen (44 answers)
Opened by jan10001 at 2003-08-25 00:08

Strat
 2003-08-25 20:24
#39373 #39373
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@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 &#36r = shift;

} # WriteStandardHtmlHeader
# ------------------------------------------------------------
sub WriteStandardHtmlFooter {
    my &#36r = shift;

} # WriteStandardHtmlFooter
# ------------------------------------------------------------
sub WriteLogonPage {
    my &#36r = 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 &#36r = Apache::Request->new(shift);
    &#36r->send_http_header('text/html');
    
    my &#36action = &#36r->param('action') || 'start';
    
    unless ( exists &#36BoardConf::Actions{&#36action)->{subs} ) {
        &#36action = 'start'; # error
    } # unless
    
    foreach my &#36sub (@{ &#36BoardConf::Actions{&#36action}->{subs} }) {

        unless (&#36sub->(&#36r)) {
            # 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/

View full thread Board-rewrite: allgemeine Ideen