Arbeitsspeicher auslesen / C++ Funktionen einbinden

Derdada

Grünschnabel
Guten Tag.

Ich beschäftige mich mit folgender Problematik.
Ich habe mir einen Hintergrungprozess in C++ geschrieben, der bestimmte Werte permanent aktualisiert und in ein Array schreibt.
Das ist soweit ja noch kein Problem.
Nur möchte ich jetzt dieses Array, das ja logischerweise im RAM liegt, mit PHP ausgeben.
Ich hatte mir überlegr, dem PHP Script einfach die Adresse des Arrays zu übergeben. Doch leider wüsste ich nicht wie. Eine andere möglichkeit wäre eine Funktion die dies übernimmt in eine DLL zu packen und diese irgendwie aus PHP aufzurufen. Kann man eventuell Apache-plugins schreiben, die neue Fuktionen zu PHP hinzufügen

Mein primäres Ziel ist es also Daten an mein PHP-Script ohne den Umweg über die Festplatte / einen mySQL-Server zu gehen.

Ist das theoretisch möglich?

Außerdem stehe ich noch vor einer weiteren Problematik:

Wie kann ich von PHP an diesen laufenden (!) Prozess Daten senden?
Ich sende dem Prozess als Beispiel eine mathematische Formel als String, dieser Rechnet es aus und trägt es in eine vorher vereinbarte Position des Arrays, von dem das PHP Script ja die Adresse kennt.

Ich würde mich sehr über Anregungen und Informationen freuen.

Mit freundlichen Grüßen,
Derdada
 
Hallo,

das passende Stichwort, das dir vermutlich bisher gefehlt hat, ist IPC (Interprocess Communication). Unter diesen Begriff fallen mehrere konkrete Umsetzungen wie Shared Memory, Named Pipes, Sockets u.v.m.

Zugriff auf Shared Memory wird von PHP ueber die Semaphor und Shared Memory Funktionen ermoeglicht.

Auf Named Pipes kann man i.d.R. ueber die normalen Dateisystemfunktionen zugreifen.

Die Socket-Funktionen dienen dem Zugriff auf (Ueberraschung) Sockets. Als Protokollfamilie sollte hier idealerweise AF_UNIX gewaehlt werden.

Jetzt musst du dich nur noch fuer eine Moeglichkeit entscheiden :)

Gruesse,
Matthias
 
Recht herzlichen Dank für die reichhaltigen Informationen.
Ich werde mich belesen und versuchen meine Probleme damit zu lösen...

Mit freundlichen Grüßen

Derdada
 
Hallo nochmal..

Die problematik liegt dort, dass mein Server mit windows läuft..

Die Sockets funktionieren nicht richtig und Shared Memory wird garnicht erst unterstützt...

Gibt es Windowsbezogene möglichkeiten des Austauschs, oder Systemunabhängige?

Ist es nicht irgendwie möglich C++ Funktionen zu nutzen Eventuell über DLLs die in den apache eingebunden werden?

Entschuldigung für die rauen Mengen an Fragen..

Mit freundlichen Grüßen,
Derdada
 
Hallo,

Die problematik liegt dort, dass mein Server mit windows läuft..
Mein Beileid ;)

Gibt es Windowsbezogene möglichkeiten des Austauschs, oder Systemunabhängige?
Sockets dürften recht systemunabhängig sein, wenn man sie bspw. auf TCP/IP aufsetzen lässt. Ansonsten gibt es die von mir angesprochenen Methoden auch unter Windows, nur halt etwas anders umgesetzt. Bei The Code Project gibt es einen entsprechenden Artikel dazu.

Ist es nicht irgendwie möglich C++ Funktionen zu nutzen Eventuell über DLLs die in den apache eingebunden werden?
Na wenn dann müsste man die DLLs in PHP einbinden, denn von da willst du ja darauf zugreifen. Der direkte Weg wäre, eine eigene Extension zu schreiben. Möglicherweise sind aber auch die Win32API-Funktionen ausreichend für diese Zwecke. Da müsstest du dann allerdings jemand anderen fragen, weil ich damit noch nicht rumgespielt habe.

Grüße,
Matthias
 
Zurück