shmop_open
(PHP 4 >= 4.0.4, PHP 5)
shmop_open — Crea o abre un segmento de memoria compartida
Descripción
$key
, string $flags
, int $mode
, int $size
)shmop_open() puede crear o abrir un segmento de memoria compartida.
Parámetros
-
key -
Identificador que el sistema utilizará para ese segmento de memoria compartida. Puede ser indicado tanto en formato decimal como hexadecimal.
-
flags -
Los indicadores que puede usar son:
- "a" para acceder (establece SHM_RDONLY para shmat) utilice este indicador cuando necesite abrir un segmento de memoria compartida de sólo lectura
- "c" para crear (establece IPC_CREATE) utilice este indicador cuando necesite 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 utilice este indicador cuando necesite leer un segmento de memoria compartida y además poder escribir en él, se trata de la opción más habitual en la mayoría de los casos.
- "n" crea un nuevo segmento de memoria compartida (establece IPC_CREATE|IPC_EXCL) utilice este indicador cuando necesite crear un nuevo segmento de memoria compartida, pero si existe otro segmento de memoria compartida con la misma clave, fallará. Esta opción es útil para propósitos de seguridad que evitan por ejemplo los exploit conocidos como "condiciones de carrera" (en inglés "race conditions").
-
mode -
Permisos que se van a asignar al segmento de memoria compartida, estos son similares a los que se asignan a los archivos. Los permisos deben pasarse en formato octal, como por ejemplo 0644
-
size -
El tamaño en bytes del segmento de memoria compartida que quiere crear
Nota:
Nota: El tercer y cuarto parámetro deberán ser igual a 0 (cero) si está abriendo un segmento de memoria compartida existente.
Valores devueltos
En caso de éxito shmop_open() devolverá un identificador que puede
utilizar para acceder al segmento de memoria compartida que ha creado. FALSE es
devuelto en caso de fallo.
Ejemplos
Ejemplo #1 Crear un nuevo segmento de memoria compartida
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
En este ejemplo se abre un segmento de memoria compartida con un identificador de sistema devuelto por ftok().
Ver también
- shmop_close() - Cerrar un segmento de memoria compartida
- shmop_delete() - Borrar segmento de memoria compartida