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

Kann man mit Perl Daten im Speicher halten?



<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
Gast Gast
 2004-07-21 15:33
#30844 #30844
Hallo Perl-Gemeinde,
ich habe mal eine grundsätzliche Frage, um für mich zu klären, ob Perl für mein Web-Projekt die richtige Sprache ist.

Meine Frage lautet: Kann man, wenn man Perl als Servermodul installiert, größere Datenmengen, auf die ständig zugegriffen wird (um darin zu suchen), im Speicher halten, oder müssen diese bei jedem HTTP-Seitenaufruf aus einem File eingelesen werden?

Ich wäre sehr dankbar, wenn mir jemand diese für mich entscheidende Frage beantworten könnte.

MfG
Mark
Relais
 2004-07-21 16:23
#30845 #30845
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, klar.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Taulmarill
 2004-07-21 16:39
#30846 #30846
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn du mod_perl verwendest kannst du in einer startup.pl eine datenstruktur aus einer file, db, o.ä. auslesen und im speicher halten, da die startup.pl nur einmal ausgeführt wird.
=> http://perl.apache.org
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Gast Gast
 2004-07-21 16:40
#30847 #30847
Kommt drauf an was Dein Provider dazu sagt wenn Du ihm den Speicher mit Deinen Datenmengen zuklopfst ;)
Gimbly
 2004-07-21 16:58
#30848 #30848
User since
2004-07-21
3 Artikel
BenutzerIn
[default_avatar]
Danke für die schnellen Antworten!

Ich könnte also ein 50MB großes File einmalig in eine Variable laden und in dieser Variable bei jedem Seitenaufruf suchen und das Gefundene dann ausgeben?

Und könnte ich den Variableninhalt auch verändern?

Wenn das geht, wäre das für mich der Grund, von PHP zu Perl zu wechseln.

Wo kann ich darüber genaueres lesen (wenn möglich in Deutsch)?

@Troll: Provider ist kein Problem, da Rootserver.

Mit freundlichen Grüßen
Mark\n\n

<!--EDIT|renee|1090847594-->
Gast Gast
 2004-07-21 17:06
#30849 #30849
[quote=Gimbly,21.07.2004, 14:58]Danke für die schnellen Antworten!

Ich könnte also ein 50MB großes File einmalig in eine Variable laden und in dieser Variable bei jedem Seitenaufruf suchen und das Gefundene dann ausgeben?

Und könnte ich den Variableninhalt auch verändern?

Wenn das geht, wäre das für mich der Grund, von PHP zu Perl zu wechseln.

Wo kann ich darüber genaueres lesen (wenn möglich in Deutsch)?

@Troll: Provider ist kein Problem, da Rootserver.

Mit freundlichen Grüßen
Mark[/quote]
'Programmieren mit Perl'
'Perl Kochbuch'
Beides im Verlag: O'Reilly

Edit:
Learning Perl ist zwar in englischer Sprache verfaßt aber auch sehr zu empfehlen.\n\n

<!--EDIT|renee|1090847607-->
Crian
 2004-07-21 17:26
#30850 #30850
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=Gimbly,21.07.2004, 14:58]Ich könnte also ein 50MB großes File einmalig in eine Variable laden und in dieser Variable bei jedem Seitenaufruf suchen und das Gefundene dann ausgeben?[/quote]

Das kannst Du machen. Könnte aber sein, dass es irgendwann zweckmäßiger wäre, die Datei in einer Datenbank (geeignet) abzuspeichern, um das Suchen noch weiter zu beschleunigen.

Aber zunächst kannst Du ja mal austesten, ob der Dir vorschwebende Weg schnell genug ist. Auf jeden Fall ist er wesentlich schneller, als die Datei jedesmal zu laden =)

[quote=Gimbly,21.07.2004, 14:58]Und könnte ich den Variableninhalt auch verändern?[/quote]

Das wird bei mod_perl problematisch. Stell Dir vor was passiert, wenn zwei Leute gleichzeitig auf einen Wert zugreifen und ihn dann ändern:

P1 liest den Wert x
P2 liest den Wert x
P1 schreibt einen neuen Wert y
P2 schreibt einen neuen Wert z

und der Wert y ist futsch. Deshalb sollte man bei mod_perl globale Variablen (und das wäre Deine Datei ja) nicht ändern.

Wenn Du Inhalte ändern willst bietet sich wirklich eine DB an (etwa mysql, wo Du doch schon einen Root-Server hast).


[quote=Gimbly,21.07.2004, 14:58]Wenn das geht, wäre das für mich der Grund, von PHP zu Perl zu wechseln.[/quote]

=)

[quote=Gimbly,21.07.2004, 14:58]Wo kann ich darüber genaueres lesen (wenn möglich in Deutsch)?[/quote]

Schau Dir mal unsere Buchempfehlungen im Wiki an (ich poste die genaue Adresse gleich noch hier rein).

edit: http://wiki.perl-community.de/bin/view/Wissensbasis/BuchEmpfehlungen\n\n

<!--EDIT|Crian|1090416893-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Gimbly
 2004-07-21 17:57
#30851 #30851
User since
2004-07-21
3 Artikel
BenutzerIn
[default_avatar]
Ich habe noch nicht so recht verstanden, wie das mit mod_perl läuft. Da sind doch sicher große Unterschiede zu CGI.
In dem mir vorliegenden 'Programmieren mit Perl' (allerdings von 2000) steht noch nix davon.
Wie muss ich mir den Ablauf eines HTTP-Requests unter mod_perl vorstellen? Irgendwie bin ich zu sehr dem 'CGI-Denken' verhaftet (also Script abarbeiten und Ende).

Dass das Verändern von globalen Variablen kritisch ist, ist mir bewusst, aber mich interessiert erst mal, ob's überhaupt geht und das Script (oder ein anderes) beim nächsten Aufruf darauf zugreifen kann.

MfG
Mark
Taulmarill
 2004-07-21 18:31
#30852 #30852
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
unter mod_perl schreibst du im endeffekt apache module.
du sagst dem apache einfach "nimm für dieses verzeichniss und alles darunter folgendes perlmodul". effektiv sieht so was in der httpd.conf dann so aus:
Code: (dl )
1
2
3
4
5
PerlRequire /usr/local/apache/MyModule/lib/Apache/MyModule/startup.pl
<Location /test/>
SetHandler perl-script
PerlHandler Apache::MyModule::Handler
</Location>

oder so ähnlich...

in der startup.pl auf jeden fall noch mit use lib; den richtigen pfad für das modul setzen. also z.B.
Code: (dl )
use lib '/usr/local/apache/MyModule/lib';

dann kannst du eine Handler.pm schreiben die das handling von /test/ und allem darunter übernimmt.

zur doku muss ich dir leider sagen, dass ich keine deutschsprachige kenne. unter dem o.g. link kommst du auf die offizielle mod_perl seite, wo du gute doku bekommst, ausserdem ist das buch Practical mod_perl sicherlich interessant für dich. aber wie gesagt, leider alles auf englisch.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Gast Gast
 2004-07-21 18:44
#30853 #30853
Mal ganz langsam jetzt ...
der Mann will 'zusätzliche' 50 MB im Server-Speicher halten (und ist auch der festen Überzeugung dass er das unter PHP bewerkstelligen kann).

Ja doch - irgendwie geht das schon - aber dann swaped das Betriebssystem ohne Ende und was wird dann aus den Ausgabezeiten?
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2004-07-21 15:33.