shmop_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

shmop_openCria ou abre um bloco de memória compartilhada

Descrição

shmop_open(
    int $key,
    string $mode,
    int $permissions,
    int $size
): Shmop|false

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