Thread speed-up trotz module: ... (17 answers)
Opened by esskar at 2003-11-10 01:35

Strat
 2003-11-12 21:44
#48400 #48400
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
nebenbei: wenn du es in mod_perl umschreibst, kannst du die groesseren Module in der httpd.conf vorladen lassen:
z.B.
Code: (dl )
     PerlRequire f:/apacheweb/8084_develop.perl-community.de/html/cgi-bin/mod_perl_startup.pl

und mod_perl_startup.pl sieht beim forum bisher folgendermaszen aus:
Code: (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
30
31
32
33
34
35
36
37
38
#! /usr/bin/perl

# care for paths
BEGIN {
   use vars qw($PATH_TO_CGI);
   $PATH_TO_CGI = 'f:\apacheweb\8084_develop.perl-community.de\html\cgi-bin';
   $ENV{PATH_TO_CGI} = 'f:\apacheweb\8084_develop.perl-community.de\html\cgi-bin';
}
use lib "$PATH_TO_CGI";

# load perl modules
use Apache::DBI;
use CGI;
use HTML::Template;
use Mail::RFC822::Address;
use HTML::Entities ();
use Regexp::Common qw(balanced);
use URI::Find::Schemeless ();
# use DBI ();
use Digest::MD5;
use File::Temp;

# load own PBoard-modules
use PBoard::Config;
use PBoard::Config;
use PBoard::Actions;
use PBoard::Subs;
use PBoard::User;
use PBoard::DB;
use PBoard::Posting;

my $dbh = Apache::DBI->connect_on_init
   ('DBI:mysql:' . &PBoard::Config::DATABASE_NAME,
    &PBoard::Config::DATABASE_USER,
    &PBoard::Config::DATABASE_PASSWORD,
    )
   or die "Error: couldn't connect to MySql: ", $DBI->errstr;
1;

der code ist leider noch nicht perfekt, aber er zeigt vielleicht die grundsaetzliche idee: der punkt ist, dass dann die Module fuer alle threads normalerweise nur einmal fuer alle apache-prozesse in den speicher geladen werden, und man so auch RAM spart. die datenbankverbindungen werden (wenn immer mit dem gleichen user verbunden wird) auch so oft wiederverwendet wie moeglich, d.h. es spart einiges an overhead fuer den verbindungsabufbau.

Exporter-Module - soweit moeglich - mit use Modul (); laden, damit 1. der namespace sauber bleibt und weniger RAM benoetigt wird. Bei HTML::Template das caching aktivieren (entweder "normales" caching oder sogar das IPC-Caching).\n\n

<!--EDIT|Strat|1068666376-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread speed-up trotz module: ...