shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Cria ou abre um bloco de memória compartilhada
Descrição
shmop_open() pode criar ou abrir um bloco de memória compartilhada.
Parâmetros
key
-
ID do sistema para o bloco de memória compartilhada. Pode ser passado como decimal ou hexadecimal.
mode
-
As opções que podem ser usadas:
- "a" para acesso (define SHM_RDONLY para shmat). Usada para abrir um segmento de memória compartilhada existente para somente leitura.
- "c" para criação (define IPC_CREATE). Usada para criar um novo segmento de memória compartilhada ou, se um segmento com a mesma chave existir, para abri-lo para leitura e gravação.
- "w" para acesso de leitura e gravação. Usada para ler e escrever em um segmento de memória compartilhada. É usada na maioria dos casos.
- "n" para criar um novo segmento de memória (define IPC_CREATE|IPC_EXCL) Usada para criar um novo segmento de memória compartilhada, porém se existir um com a mesma chave, irá falhar. É útil para segurança, pois assim é possível evitar ataques de condição de corrida.
permissions
-
As permissões a atribuir ao segmento de memória, as mesmas das permissões de um arquivo. As permissões precisam ser passadas em formato octal, como por exemplo
0644
. size
-
O tamanho do bloco de memória compartilhada a ser criado, em bytes.
Note:
Nota: o 3º e o 4º parâmetros devem ser informados como 0 se um segmento de memória existente estiver sendo aberto.
Valor Retornado
Em caso de sucesso, shmop_open() retornará uma instância de Shmop que
pode ser usada para acessar o segmento de memória compartilhada criado. false
é
retornado em caso de falha.
Erros/Exceções
Se mode
for inválido ou size
for menor ou igual a zero,
um ValueError será lançado.
Em outras falhas, E_WARNING
será emitido.
Registro de Alterações
Versão | Descrição |
---|---|
8.0.0 | Em caso de sucesso, esta função agora retorna uma instância de Shmop; anteriormente, retornava um resource. |
8.0.0 |
Se mode for inválido ou size for menor ou igual a zero,
um ValueError é lançado; anteriormente, era emitido um E_WARNING
e a função retornava false .
|
Exemplos
Example #1 Cria um novo bloco de memória compartilhada
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>
Este exemplo abriu um bloco de memória compartilhada com um ID do sistema retornado por ftok().
Veja Também
- shmop_close() - Fecha um bloco de memória compartilhada
- shmop_delete() - Deleta um bloco de memória compartilhada