Forum und email

shmop_open

(PHP 4 >= 4.0.4, PHP 5)

shmop_open — Crea oppure apre un segmento di memoria condivisa

Descrizione

int shmop_open ( int $key , string $flags , int $mode , int $size )

La funzione shmop_open() può creare oppure aprire un segmento di memoria condivisa.

La funzione shmop_open() utilizza 4 parametri: key, indica l'identificativo di sistema per il segmento di memoria condivisa, questo parametro può essere passato come numero decimale o esadecimale. Il secondo parametro è un flag che può assumere i seguenti valori:

  • "a" per accesso (SHM_RDONLY per shmat), usare questo flag quando occorre aprire un segmento di memoria condivisa esistente in sola lettura
  • "c" per creazione (IPC_CREATE), usare questo flag quando si ha la necessità di creare un nuovo segmento di memoria condivisa oppure, se esiste già un segmento con la medesima chiave, tentare di aprirlo in lettura e scrittura
  • "w" per accesso in lettura & scrittura, usare questo flag quando si deve accedere al segmento di memoria condivisa in lettura e scrittura, nella maggior parte dei casi si usa questo flag.
  • "n" per creare un nuovo segmento (IPC_CREATE|IPC_EXCL), usare questo flag quando si vuole creare un nuovo segmento di memoria condivisa, ma, se già ne esiste uno con il medesimo flag, la funzione fallisce. Ciò è utile per motivi di sicurezza, infatti questo permette di evitare problemi di concorrenza.
Il terzo parametro, mode, indica i permessi che si desidera assegnare al segmento di memoria, questi sono i medesimi permessi utilizzati per un file. Occorre passare i permessi in forma ottale, ad esempio 0644. L'ultimo parametro è la dimensione in bytes del blocco di memoria condivisa che si desidera creare.

Nota: Il terzo ed il quarto parametro dovrebbero essere a 0 se si sta aprendo un segmento di memoria esistene. Se la funzione shmop_open() ha successo, sarà restituito un id da usarsi per accedere al segmento di memoria condivisa appena creato.

Example#1 Creazione di un nuovo blocco di memoria condivisa

<?php
$shm_key 
ftok(__FILE__'t');
$shm_id shmop_open($shm_key"c"0644100);
?>

Questo esempio apre un blocco di memoria condivisa con id di sistema restituito da ftok().