Matthias: Shared Memory

Hallo

Also ich versuche erstmal mein Problem zu schildern. Ich habe im Hintergrund eine Anwendung laufen, die Sachen berechnet und ausgibt. Zurzeit wird noch auf Mysql zugegriffen, aber da das Zugreiffen von PhP auf die anschließend ausgegebenen Daten in Mysql vllt etwas lange dauert, dachte ich mir könnte ich es doch mit Shared Memory ausprobieren.
Leider habe ich es noch nicht damit ausprobiert, vielleicht kennt ihr einige Vorteile oder Nachteile von Shared Memory. Weiß einer vielleicht in welchem Prozess die Daten abgespeichert werden, schlicht wie man eine Speicheradresse aufrufen kann, von einer richtigen Anwendung nicht von PhP aus.

Danke

  1. Hallo Matthias,

    Leider habe ich es noch nicht damit ausprobiert, vielleicht kennt ihr einige Vorteile oder Nachteile von Shared Memory. Weiß einer vielleicht in welchem Prozess die Daten abgespeichert werden, schlicht wie man eine Speicheradresse aufrufen kann, von einer richtigen Anwendung nicht von PhP aus.

    Beim Ausprobieren und Löschen der Tests sind die beiden Programme "ipcs" und "ipcrm" nützliche Werkzeuge. (Du soltest als root angemeldet sein, um alle Segmente des Systems bearbeiten zu können/anzuzeigen.)

    Das Konzept von Shared Memory ist es gerade -nicht mehr _einem_ Prozess- Daten zur Verfügung zu stellen (genau nach dem Prozess gefragt - es ist der Kernel).
     Hat also ein PHP-Script Shared Memory angelegt und sind nicht zusätzliche Schreibrechtsbeschränkungen vergeben worden, kann jedes andere Programm unter dem Vergebenem Schlüssel auf das Segment zugreifen.
     Wie dies zu programmieren ist, kann ich Dir unter http://www.pronix.de/pronix-229.html und http://www.pronix.de/pronix-218.html erklären lassen.

    Zum Hauptvorteil beleibt nur anzumerken, das es der schnellste Weg sein dürfte zwischen zwei Prozessen, die nicht vom selben Elternprozess erstellt wurden (dort würden sich möglicherweise auch Pipes anbieten), Daten zu trasferieren...

    Gruß aus Berlin!
    eddi

  2. Heißa, Matthias,

    Weiß einer vielleicht in welchem Prozess die Daten abgespeichert werden, schlicht wie man eine Speicheradresse aufrufen kann, von einer richtigen Anwendung nicht von PhP aus.

    Die einfachste Möglichkeit, Shared Memory zu benutzen, ist IMHO das shm-Dateisystem. Das ist unter Linux normalerweise unter /dev/shm gemountet. Du kannst dort einfach Dateien anlegen und bearbeiten, es handelt sich quasi um eine Partition im Hauptspeicher.
    Du wirst aber merken, dass dies keine großen Vorteile gegenüber normalen Dateien auf der Festplatte bietet, durch die Caching-Mechanismen von Linux wirst du fast keinen Unterschied merken.

    War es so etwas, was du gesucht hast?

    Gautera!
    Grüße aus Biberach Riss,
    Candid Dauth

    --
    Ein Fußball-Fan? Noch auf der Suche eine Schlafmöglichkeit im Großraum Stuttgart für die WM 2006? Wie wäre es mit Herrenberg, einer gemütlichen Kleinstadt am Rande des Schönbuchs – von der Lage her ideal, auch für andere Vorhaben im Urlaub. Ferienwohnungen-Herrenberg.com.
    http://cdauth.de/