shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Cria ou abre 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.
Nota:
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.
Exemplos
Exemplo #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().