shmop_open
(PHP 4 >= 4.0.4, PHP 5)
shmop_open — Crea o abre un segmento de memoria compartida
Descripción
int shmop_open
( int $clave
, string $opciones
, int $modo
, int $tamanio
)
shmop_open() se utiliza para crear o abrir un segmento
de memoria compartida.
shmop_open() utiliza 4 parametros: clave, que es el
identificador que el sistema utilizará para ese segmento de memoria
compartida y que puede ser indicado tanto en formato decimal como
hexadecimal. El segundo parámetro son las opciones que se pueden
utilizar:
-
"a" para acceder (se activa SHM_RDONLY en el shmat) se utiliza esta
opción para abrir un segmento de memoria compartida que ya existe en
modo de solo lectura.
-
"c" para crear (se activa IPC_CREATE) se utiliza esta opción
para crear un nuevo segmento de memoria compartida o para intentar abrir en
modo de lectura y escritura un segmento que ya existe.
-
"w" para acceder en modo de lectura y escritura. Se utiliza esta
opción para poder leer un segmento de memoria compartida y
además poder escribir en el. Se trata de la opción
más habitual en la mayoría de los casos.
-
"n" para crear un nuevo segmento de memoria compartida (se activan IPC_CREATE|IPC_EXCL) se utiliza esta opción para crear un nuevo segmento de memoria compartida a no ser que ya exista otro segmento de memoria compartida con la misma clave. Esta opción es útil por motivos de seguridad para evitar por ejemplo "condiciones de carrera" (en inglés "race conditions").
El tercer parámetro es el modo, que son los permisos que se van a
asignar al segmento de memoria compartida. Estos permisos son similares a
los que se asignan a los archivos. La forma de indicar los permisos es
identica a la que se utiliza en sistemas UNIX para indicar los permisos
de los archivos, como por ejemplo "0644". El último
parámetro es el tamaño en bytes del segmento de memoria compartida
que se va a crear.
Note:
Nota: el tercer y cuarto parámetro deben ser igual a 0 (cero) si se está abriendo un segmento de memoria compartida existente. Si la función shmop_open() tiene éxito, devolverá un identificador que se puede utilizar posteriormente para acceder al segmento de memoria compartida que se ha creado.
Example#1 Creación de un nuevo segmento de memoria compartida
<?php
$shm_key = ftok(__FILE__,'t');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
En el ejemplo anterior se crea un nuevo segmento de memoria compartida
cuya clave se ha generado con ayuda de la función ftok().