shmop_open
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