Ich will eine Datenübertragung von vom Apache gesteuertes Skript zu Daemon haben. Stellt sich doch die Frage was besser ist (Pros & Cons): shared memory oder udp socket listener?
Eine Umsetzung von shared memory-Kommunikation würde wie folgt aussehen:
Der allokierte shared memory Block wäre von einer Größe (Maximale Anzahl an gleichzeitig verarbeitbaren Requests durch den Apache) Bytes. Ein gesetztes Byte bedeutet dass ein Prozess den Block ftok(DAEMON_PATH, 't')+X+1 beschrieben allokiert und beschrieben hat, wobei X der Platz des Bytes in der shared memory ist.
Bei Änderungen am shmop sollte ein PCNTL signal gesendet werden vom entsprechenden Prozess an den Daemon.
Ein Beispiel fürs auslesen:
Wie ein normaler socket listener aussieht, das muss ich euch wohl nicht vormalen?^^
Fragt sich nur was welche Nachteile & Vorteile hat...?
Eine Umsetzung von shared memory-Kommunikation würde wie folgt aussehen:
Der allokierte shared memory Block wäre von einer Größe (Maximale Anzahl an gleichzeitig verarbeitbaren Requests durch den Apache) Bytes. Ein gesetztes Byte bedeutet dass ein Prozess den Block ftok(DAEMON_PATH, 't')+X+1 beschrieben allokiert und beschrieben hat, wobei X der Platz des Bytes in der shared memory ist.
Bei Änderungen am shmop sollte ein PCNTL signal gesendet werden vom entsprechenden Prozess an den Daemon.
Ein Beispiel fürs auslesen:
PHP-Code:
$ftok = ftok(DAEMON_PATH, 't');
@shmop_delete(@shmop_open($ftok, "w", 0, 0)); // clean up older shmop's
$shmop = @shmop_open($ftok, "c", 0666, MAX_APACHE_REQS);
$last_string = str_repeat("0", MAX_APACHE_REQS);
pcntl_signal(SIGHUP, function () use ($shmop, &$last_string, $ftok) {
$string = shmop_read($shmop, 0, MAX_APACHE_REQS);
for ($i = 0; $i < MAX_APACHE_REQS; $i++) {
if ($string[$i] !== "0" && $string[$i] !== "") { // New data
$tmp_shm = shmop_open($ftok + $i + 1, "w", 0, 0);
do_something_with_data(shmop_read($tmp_shm, 0, shmop_size($tmp_shm)));
shmop_delete($tmp_shm);
shmop_write($shmop, "0", $i);
}
}
});
Fragt sich nur was welche Nachteile & Vorteile hat...?
Kommentar