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() 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", 0644, 100);
?>
Questo esempio apre un blocco di memoria condivisa con id di sistema
restituito da ftok().