Forum und email

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"0644100);
?>

En el ejemplo anterior se crea un nuevo segmento de memoria compartida cuya clave se ha generado con ayuda de la función ftok().