Eine dumme Frage. Sollte $mode von http://www.php.net/manual/de/function.shmop-open.php auch unter Windows irgendeine Wirkung haben?
Unter meinem Win 8.1 funktioniert diese Script auch mit $mode = 0. Unabhängig davon, ob es den shared memory block schon gibt. Zumindest beim Flag 'c' wundert mich das doch sehr.
'c' legt einen shared memory block an. Da es den dann bei 'w' bzw. 'a' schon gibt, ist das ok, dass es auch mit $mode = 0 funktioniert. Zitat http://www.php.net/manual/de/function.shmop-open.php
Aber wenn man einen neuen $key definiert, existiert der shared memory block für 'c' noch nicht. Also dürfte es dort meiner Meinung nach mit $mode = 0 nicht funktionieren. Oder spielt $mode nur bei Linux-Betriebssystemen eine Rolle?
PHP-Code:
$key = 0x5;
$mode = 0;
$size = 10;
$id = shmop_open($key, 'c', $mode, $size);
var_dump($id);
var_dump(shmop_write($id, 'c', 0));
var_dump(shmop_read($id, 0, $size));
shmop_close($id);
$id = shmop_open($key, 'w', $mode, $size);
var_dump($id);
var_dump(shmop_write($id, 'w', 0));
var_dump(shmop_read($id, 0, $size));
shmop_close($id);
$id = shmop_open($key, 'a', $mode, $size);
var_dump($id);
var_dump(shmop_read($id, 0, $size));
var_dump($id);
'c' legt einen shared memory block an. Da es den dann bei 'w' bzw. 'a' schon gibt, ist das ok, dass es auch mit $mode = 0 funktioniert. Zitat http://www.php.net/manual/de/function.shmop-open.php
Beachten Sie: der dritte und vierte Parameter sollten mit 0 angegeben sein, falls Sie einen bereits existierenden Speicherbereich öffnen.