Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3182[/thread]

mod_perl Skript auch als CGI? (Seite 3)



<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten
ptk
 2006-02-19 13:14
#29856 #29856
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Heromaster,19.02.2006, 04:09]Ich muss mich korrigieren, nicht Apache::PerlRun ist schneller als Apache::Registry, sondern umgekehrt.
[/quote]PerlRun kannte ich noch gar nicht, aber die Manpage sagt ja schon, dass Apache::Registry viel schneller ist.

Quote
CGI hängt in der Performance Apache::Request ziemlich hinterher, da letzteres sowie die meisten Standardmodule, die mit mod_perl ausgeliefert werden, in C geschrieben sind.

Mich würde ja interessieren, ob es in der Praxis tatsächlich bemerkbar ist. Mit CGI.pm verwende ich normalerweise nur param() und vielleicht header(), und von diesen Aufrufen gibt es typischerweise nicht viele.
Quote
Dann kommt noch meist die DB-Verbindung dazu, die ziemlich ausbremst.

Das macht aber keinen Unterschied, ob es ein Registry-Handler oder ein echter Handler ist? Man sagt doch in beiden Fällen einfach nur "PerlModule Apache::DBI" oder macht Connection-Caching mit globalen Variablen
Quote
Dann kommen noch ein paar Kleinigkeiten hinzu, wie das Auslagern von Perlcode in andere Handler als den Content-Handler.

Eine Mail sende ich zum Beispiel nicht während der Inhaltsgenerierung, sondern während der Logging-Phase.

Klar, mit mod_perl hat man mehr Möglichkeiten, um das Letzte herauszuholen.
Heromaster
 2006-02-19 14:03
#29857 #29857
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich werde mal ein Testscript schreiben, welches unter Apache::Registry mit CGI.pm läuft und ein für mod_perl optimiertes Script. Wird ein paar Tage dauern, da ich hier nicht in meiner Arbeitsumgebung bin. Zahlen werden sicherlich aussagekräftiger sein als Worte.

Da fällt mir allerdings noch etwas ein: Der Vergleich mod_perl <-> CGI muss ein bißchen relativiert werden. Hat man ein Script, welches einige große DB-Abfragen und Berechnungen durchführt, wird dies natürlich unter mod_perl unwesentlich schneller laufen als unter CGI.

@renee: Ja, würde ich gerne machen. Allerdings bin ich nicht wirklich ein guter Schreiber. Aber vielleicht können wir uns ja per PM verständigen.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
Strat
 2006-02-19 17:29
#29858 #29858
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei Perl/CGI ist das hauptproblem, dass fuer jede anfrage perl gestartet werden, dann das script uebersetzt und ausgefuehrt werden muss. Fuer ein Gaestebuch mit 10 eintraegen pro Monat ist das eine gute wahl, aber wenn sehr viele anfragen kommen, ist das schon ein ganz schoener overhead.

Bei mod_perl gibt's viele verschiedene wege:

Apache::PerlRun(:?::Once)?: haelt perl im speicher (sagt ja mod_perl), compiliert aber das script inkl. Module bei jedem aufruf neu. das duerfte schon um einiges schneller als Perl/CGI sein (ich schaetze mal, so 3-8x, habe aber keine konkreten zahlen)

Apache::Registry: dies haelt auch das script im RAM, und zwar in eine Subroutine umcompiliert. Nur wenn sich die Datei auf der HDD aendert, wird neu compiliert. Laufzeitgewinn: geschaetzt 5-15x

Apache::Request: dies macht im Grunde dasselbe wie Apache::Registry, nur schreibt man selbst handler und keine kompletten programme. Dadurch kann man die funktionen, die apache eh schon hat, mitbenuetzen (z.B. Up-/Download von Dateien, Urls rewriten, authentication, cleanup, ...). Laufzeitgewinn: geschaetzt 10-30x

der laufzeitgewinn haengt natuerlich sehr von der aufgabe und wie man sie coded ab. sie entsprechen meinen Erfahrungswerten, wobei ich auch schon ziemliche ausreisser hatte. Nur mit Apache::PerlRun habe ich noch keine Erfahrung.

http://develop.perl-community.de/ basiert uebrigens auf Apache::Registry mit Ausnahme der Dateiup- und -downloads (Apache::Request), weil die da viel schneller zu schreiben waren.

Apache::DBI macht auch nur dann sinn, wenn man sich an der datenbank nur mit wenigen usercredentials anmeldet und diese verbindungen wieder benoetigt. wenn fuer jeden connect andere credentials benoetigt werden, ist Apache::DBI vermutlich langsamer als DBI pur.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Heromaster
 2006-02-19 18:18
#29859 #29859
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,19.02.2006, 16:29]Apache::Request: dies macht im Grunde dasselbe wie Apache::Registry, nur schreibt man selbst handler und keine kompletten programme. Dadurch kann man die funktionen, die apache eh schon hat, mitbenuetzen ... *schnipp*[/quote]
Das ist falsch. Apache::Request ist das CGI.pm für mod_perl. Du brauchst kein Apache::Request um Handler für andere Phasen des Apache-Zyklus zu schreiben.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
renee
 2006-02-20 00:44
#29860 #29860
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Heromaster,19.02.2006, 13:03][...]

@renee: Ja, würde ich gerne machen. Allerdings bin ich nicht wirklich ein guter Schreiber. Aber vielleicht können wir uns ja per PM verständigen.[/quote]
Klar können wir uns per PM verständigen, Du kannst aber auch einfach einen Artikel anfangen und ich lese dann für die kleineren Fehler drüber. Was mod_perl an sich angeht, bin ich selbst noch Anfänger...
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/
<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten



View all threads created 2006-02-10 19:48.