[Cologne-pm] shared vars mit mod_perl

A. Pagaltzis pagaltzis at gmx.de
Wed Apr 4 07:51:51 PDT 2007


* Johannes Huettemeister <j.huettemeister at googlemail.com> [2007-04-03 16:10]:
> 1. Wie kann eine Child die Variable schon kennen bevor der
> erste request bearbeitet wurde? Hilft hier der "startup.pl"
> Mechnanismus?

Genau das. Dort werden Dinge erledigt, die der allererste Apache-
Prozess beim Start erledigt (der Mutterprozess, der selber keine
Anfragen bearbeitet). Alle Tochterprozesse erben die Perl-
Umgebung dieses Prozesses.

Pack also hier deine Datenstruktur in eine Paketvariable und sie
wird dann den Tochterprozessen zur Verfügung stehen.

* Susan Dittmar <Susan.Dittmar at gmx.de> [2007-04-03 16:20]:
> - Ist data.pl neuer als data.xml, dann wird data.pl gelesen (das ist die
>  Datenstruktur, die das Einlesen der xml-Datei erzeugt, die dann mittels
>  Data::Dumper in eine Datei geschrieben wurde; lädt *viel* schneller als
>  das Parsen der xml-Datei).
> - Ist data.xml neuer, dann wird die xml-Datei eingelesen und die
>  Datenstruktur direkt nach dem Lesen in data.pl mittels Data::Dumper
>  exportiert (File Locking nicht vergessen, wenn man mit parallelen
>  Prozessen auf dieselbe Datei zugreifen will!)

Du kannst dir das Selberschreiben hierbei übrigens sparen: nimm
einfach Cache::Cache. Da kannst du dann auch die Backends
auswechseln, also zB Shared Memory für den Cache verwenden, fast
ohne deinen Code zu ändern.

* Johannes Huettemeister <j.huettemeister at googlemail.com> [2007-04-03 16:50]:
> das Einlesen in eine Perl Datenkstruktur ist also ne Art
> Hintergrund Prozess, wenn ich das richtig kapiert habe.

Nein, sie meint nur, dass du die Datenstruktur nach dem Parsen in
einer Datei hinterlegst, und alle anderen Prozesse dann diese
vorgeparste Datei laden, wenn sie nicht älter ist, als die
XML-Datei.

In deinem Fall dürfte das Laden in startup.pl aber die einfachere
Lösung sein.

Gruss,
-- 
Aristoteles Pagaltzis // <http://plasmasturm.org/>


More information about the Cologne-pm mailing list