Documentación offline PHP master

shmop_open

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

shmop_open

Crea o abre un bloque de memoria compartida

Descripción#

shmop_open(int $key, string $mode, int $permissions, int $size): Shmop
```php

`shmop_open` puede crear o abrir 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

> [!NOTE]
> 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`.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.0.0 | `shmop` ahora espera una instancia de `Shmop` anteriormente se esperaba un `resource`. |
| 8.0.0 | Si `mode` es inválido, o si `size` es inferior o igual a cero, se lanza una `ValueError`; anteriormente, se emitía un `E_WARNING` en su lugar, y la función devolvía `false`. |

## Ejemplos

Crear un nuevo bloque de memoria compartida Shmop

```php

Este ejemplo abre un nuevo bloque de memoria compartida, cuyo identificador es devuelto por ftok.

Véase también#

shmop_close

shmop_delete