Auch wenn ich noch ziemlich am Anfang meiner Python Kariere bin,
habe ich eine Frage, die vielleicht doch etwas fortgeschrittener ist.
Es geht hier bei nicht um ein bestimmtes Projekt, sondern hauptsächlich um das Interesse,
wie das zu realisieren ist.
Wie die Überschrift schon vermuten lässt, will ich einen Wert von Python zu PHP und wieder zurückgeben.
Von den verschiedenen Möglichkeiten wie Socket's, gemeinsame Datei, über Datenbank und eben den gemeinsamen
Speicherbereich. Bin ich aktuell bei dem gemeinsamen Speicher angekommen.
Von einem Python zum anderen Python Prozess hat das auch mit folgendem kleinen code funktioniert.
Code: Alles auswählen
# Python Prozess1
from multiprocessing import shared_memory
shm_a = shared_memory.SharedMemory(name='0xff3', create=True, size=100)
shm_a.buf[0] = 1
print(shm_a.buf[0])
benutzereingabe = input("Eingabe für Weiter:")
shm_a.unlink()
# Python Prozess2
from multiprocessing import shared_memory
shm_a = shared_memory.SharedMemory(name='0xff3', create=False)
data = shm_a.buf[0]
print(data)
benutzereingabe = input("Eingabe für Weiter:")
shm_a.close()
Code: Alles auswählen
// PHP Prozess1
<?php
// Create 100 byte shared memory block with system id of 0xff3
$shm_key = 0xff3;
$shm_id = shmop_open($shm_key, "c", 0644, 100);
if (!$shm_id) {
echo "Couldn't create shared memory segment\n";
}
// Lets write a test string into shared memory
$shm_bytes_written = shmop_write($shm_id, "my 2hared memory block", 0);
if ($shm_bytes_written != strlen("my shared memory block")) {
echo "Couldn't write the entire length of data\n";
}
?>
// PHP Prozess2
<?php
// Create 100 byte shared memory block with system id of 0xff3
$shm_key = 0xff3;
$shm_id = shmop_open($shm_key, "c", 0644, 100);
if (!$shm_id) {
echo "Couldn't create shared memory segment\n";
}
// Get shared memory block's size
$shm_size = shmop_size($shm_id);
echo "SHM Block Size: " . $shm_size . " has been created.\n";
// Now lets read the string back
$my_string = shmop_read($shm_id, 0, $shm_size);
if (!$my_string) {
echo "Couldn't read from shared memory block\n";
}
echo "The data inside shared memory was: " . $my_string . "\n";
//Now lets delete the block and close the shared memory segment
if (!shmop_delete($shm_id)) {
echo "Couldn't mark shared memory block for deletion.";
}
shmop_close($shm_id);
?>
Geht das leider nicht.
Da wohl wie erwartet PHP und Python trotz der gleichen Alias für die Speicheradresse.
Diese anders verarbeiten.
Nur wie ??? Könnte mir da bitte jemand auf die Sprünge helfen?
Danke