shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Crea o abre un bloque de memoria compartida
Parámetros
key
-
Identificador del sistema para el bloque de memoria compartida.
Este argumento puede ser pasado como un decimal o
un hexadecimal.
mode
-
Se pueden utilizar:
-
"a"
para acceso (utiliza SHM_RDONLY
para shmat)
utilice esta opción para abrir un bloque ya existente en modo solo lectura.
-
"c"
para creación (utiliza IPC_CREATE
)
utilice esta opción para crear un nuevo bloque, o, si un
segmento con el mismo identificador existe, intentar acceder a él en
modo lectura y escritura.
-
"w"
para acceso en lectura y escritura. Utilice
esta opción cuando se deba acceder en lectura y
escritura a un segmento de memoria compartida.
Este es el caso más común.
-
"n"
crea un nuevo segmento de memoria compartida
(utiliza IPC_CREATE|IPC_EXCL
). Utilice esta opción
cuando se quiera crear un nuevo segmento de memoria
compartida a menos que ya exista uno corrupto con la
misma opción. Esto es muy útil por razones de seguridad, para evitar
agujeros de seguridad que exploten la carrera por los recursos.
permissions
-
Los permisos que se otorgan a este bloque. Son
los mismos que para los archivos. Estos permisos deben
ser pasados en formato octal (i.e. 0644).
size
-
El tamaño del bloque de memoria compartida que se quiere crear, en bytes
Nota:
Nota: Los tercer y cuarto argumentos deben ser pasados a 0 si se quiere abrir un bloque de memoria compartida ya existente.
Valores devueltos
En caso de éxito, shmop_open() devuelve una
instancia de Shmop que puede ser utilizada para acceder a la memoria que
se acaba de crear. false
será devuelto en caso de fallo.
Errores/Excepciones
Si mode
es inválido, o si size
es inferior o igual a cero,
se lanza una ValueError.
En otros casos de fallo, se emite un E_WARNING
.
Ejemplos
Ejemplo #1 Crear un nuevo bloque de memoria compartida Shmop
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
Este ejemplo abre un nuevo bloque de memoria compartida,
cuyo identificador es devuelto por ftok().