shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
shmop_open — Cria ou abre um bloco de memória compartilhada
Descrição
int shmop_open
( int $key
, string $flags
, int $mode
, int $size
)
shmop_open() pega 4 parâmetros: chave, que é usado
pelo id do sistema para o bloco de memória compartilhada, esse parâmetro pode ser passado
como decimal ou hexadecimal. O segundo parâmetro são flags que você pode usar:
-
"a" para acesso (seta SHM_RDONLY para shmat)
use essa flag quando você precisar abrir um bloco de memória compartilhada existente
como somente leitura
-
"c" para criar (seta IPC_CREATE)
use essa flag quando você precisar criar um novo bloco de memória compartilhada
ou se um segmento com a mesma chave existir, tente abrir isso para ler e escrever
-
"w" para ler & acesso à escrita
use essa flag quando você precisar ler e escrever para um segmento de
bloco de memória compartilhada, use essa flag na maior parte dos casos.
-
"n" cria um novo segmento de memória (seta IPC_CREATE|IPC_EXCL)
use essa flag quando você quer criar um novo segmento de memória compartilhada
mas se um já existir com a mesma flag, irá falhar. Isso é útil
para propósitos de segurança, usando isso você pode previnir rápidos exploits.
O terceiro parâmetro é o modo, que são permissões que você
deseja designar para o seu segmento de memória, estas são as mesmas permissões
para o arquivo. Permissões precisam ser passadas no formato octal ex. 0644.
O último parâmetro é o tamanho do bloco de memória compartilhada que você deseja criar
em bytes.
Nota:
Nota: o 3rd e 4th devem ser colocados como 0 se você está abrindo um
segmento de memória existente. Em caso de sucesso shmop_open() irá
retornar um id que você pode usar para acessar o segmento de memória compartilhada
que você criou.
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);
?>
Esse exemplo abre um bloco de memória compartilhada com um id do sistema retornado por
ftok().