(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Cria ou abre um bloco de memória compartilhada
shmop_open() pode criar ou abrir um bloco de memória compartilhada.
keyID do sistema para o bloco de memória compartilhada. Pode ser passado como decimal ou hexadecimal.
modeAs 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.
sizeO 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.
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.
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.
| 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.
|
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().