Estoy tratando de hacer una inserción en memoria con shared memory, lo que intento es que se cree el espacio en memoria y luego se intercambie entre 1 y 0, pero algo está fallando.
Código PHP:
// abro el espacio 0xff3 de 8 bits, si no existe lo crea
$shm_id = shmop_open(0xff3, "c", 0777, 8);
if (!$shm_id) die("No se pudo acceder la memoria");
// leo el valor de esta posicion
$shmr = shmop_read($shm_id, 0, 0);
echo "[reading:$shmr]";
// si el valor es 1 lo cambio por 0, y si es 0 lo cambio por 1, y guardo el resultado.
$shmw=($shmr)?shmop_write($shm_id, "0", 0):$shmw=shmop_write($shm_id, "1", 0);
die("[writing:$shmw]");
[reading:][writing:1]
ya que está recién creado no hay salida, y luego se escribe 1, hasta aquí todo bien.
La segunda vez que lo ejecuto queda como:
[reading:0][writing:1]
y aquí está el problema, lee un 0 siendo que he escrito un 1, si vuelvo a ejecutarlo vuelve a quedar en 0, siendo que sigo escribiendo 1.
Que estoy haciendo mal? :(