Schrift
[thread]3153[/thread]

Net::MySQL versus Apache::DBI - Performance?



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Airport1
 2005-07-10 19:49
#31118 #31118
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, habe es in meinem mod_perl handler "auf Teufel komm raus" nicht hinbekommen dass ich fuer die mysql-Anbindung DBI verwenden konnte (resultierte immer in einem Segmentation Fault mit Signal 11 im apache2 error log, das Script schickte schon bei EInbau eines simplen DB Connect nicht mal mehr einen Header raus - standalone als stinknormales Perl-Script hingegen macht DBI keine Probleme).

Nun habe ich ersatzweise Net::MySQL (aktuelle Version ist m.E. 0.08) verwendet, damit funktionierts.

Jetzt wuerde mich interessieren ob Net::MySQL ungefaehr gleich schnell wie DBI ist, oder sogar noch schneller? Vielleicht hat da ja jemand schon Erfahrungswerte machen koennen.

Was uebrigens auch nicht will ist das Compilieren der Apache Constants.

Verwendet wird ein Apache2 und mod_perl 1.9999...\n\n

<!--EDIT|Airport1|1121010975-->
renee
 2005-07-10 20:27
#31119 #31119
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es gibt ein neueres CPAN:mod_perl (2.01). Vielleicht solltest Du das mal probieren. Dort sind einige Probleme behoben!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Airport1
 2005-07-10 20:45
#31120 #31120
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit welcher Version meldet sich dieses dann in der Server Signatur?

Derzeit habe ich (noch) exakt dies hier - diese 1.999.21 irritiert mich etwas - fuer was steht die denn genau? dachte naemlich ich haette mod_perl2 installiert ;) :

Server: Apache/2.0.52 (Debian GNU/Linux) PHP/4.3.10-13 mod_ssl/2.0.52 OpenSSL/0.9.7e mod_perl/1.999.21 Perl/v5.8.4
Strat
 2005-07-11 00:37
#31121 #31121
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1.99 sind die beta-versionen von mod_perl2

mod_perl 1 ist erst bei so etwa 1.29 angekommen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Airport1
 2005-07-11 15:34
#31122 #31122
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vielen Dank fuer die ausgezeichnete Hilfe! Durch die Community hier wurde mir schon sehr viel weitergeholfen!!

Noch ne Frage ;) Ist es richtig dass nur Apache::DBI persistente Verbindungen bietet, und ich aehnliches mit Net::MySQL nicht erreichen kann? Ich dachte naemlich das ginge auch damit und habe die Connection z.B. immer so aufgebaut:

 my $mysql ||= Net::MySQL->new( # CONDITIONAL opening, so never close
   hostname => 'localhost',
   database => 'usrdb_ranking-hits',
   user     => 'geheim',
   password => 'geheim'
 );

Habe dank der Community nun das neueste Apache-DBI-0.98 installieren koennen. mod_perl 2.0.1 will noch nicht, zuerst bekam ich Meldungen wie

Cannot install mod_perl/2.0.1 on top of mod_perl/1.999_021
due to a major API change between mod_perl 1.999_21 and 1.999_22.

Dann habe ich das alte 1.999.021 mittels
apt-get remove libapache2-mod-perl2
removed (ja, ist "nur" eine Beta von mod_perl2 und nicht 2.0.1)

Dann unter cpan abermals versucht 2.0.1 zu installieren, woraufhin apxs meint ich haette einen Apache 1.3, und ansonsten u.a. eine ap_release.h gesucht wird, die ich nicht habe. Naja, unter Umstaenden bleibe ich dann wohl bei 1.999.021 - scheint ja doch sonst eine komplexe Angelegenheit zu sein ;)\n\n

<!--EDIT|Airport1|1121081878-->
Strat
 2005-07-11 18:10
#31123 #31123
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei mod_perl kannst du die DBI-Connection auch schon in einem startup-script herstellen (vorausgesetzt, es wird immer mit demselben user/passwort connected); dann connect_on_init (oder so aehnlich) verwenden; siehe perldoc Apache::DBI\n\n

<!--EDIT|Strat|1121091067-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Airport1
 2005-07-11 19:37
#31124 #31124
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das mit connect_on_init hab ich in meiner startup.pl versucht, daraufhin meint er dass er Apache.pm nicht laden kann. Seltsamerweise meckert er aber nicht ueber das use Apache::DBI in der startup Datei und auch nicht ueber das PerlModule Apache::DBI in der apache2.conf.

Im Handler selber habe ich VOR dem sub handler { ein
my $dbh;

IM Handler selber dann:
$dbh ||= DBI->connect("DBI:mysql:usrdb_ranking-hits....

Desweiteren wird prepare, execute, finish und sogar disconnect verwendet (letzteres soll unter Apache::DBI nichts bewirken.. also eine NoOp)

Sollte ich noch was beachten ;) ?

Das folgende gibt bei mir ein Bild auf den Request aus, jedoch seltsamerweise immer als mit Header "Transfer-Encoding: chunked", woran liegt das?

open(IMAGE,"</home/gfx/design$style/$pr.gif");
$r->print(<IMAGE>);
close(IMAGE);
return OK;\n\n

<!--EDIT|Airport1|1121098279-->
Airport1
 2005-07-12 15:13
#31125 #31125
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Fuer die Nachwelt: um das "chunked" abzustellen habe ich es nun so geloest:

my $fname = '/pfad/datei.gif';
my $flen = (-s $fname);

open(IMAGE, '<'.$fname);

$r->headers_out->set('Content-Length', $flen);
$r->print(<IMAGE>);
close(IMAGE);
return OK;

Bleibt nur die Frage ob ein $content_length = (stat (FILEHANDLE))[7]; schneller waere ;)
Airport1
 2006-02-18 20:44
#31126 #31126
User since
2005-07-10
24 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das kann ich heute sogar mit JA beantworten, im Test war "stat" 12% schneller :)
esskar
 2006-02-18 20:49
#31127 #31127
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
gibt es einen Grund, warum du kein Transfer-Encoding: chunked willst ?
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-07-10 19:49.