XCIV. Mémoire partagée

Shmop est un ensemble de fonctions simples pour gérer la mémoire partagée avec PHP ( lecture , écriture , création et suppressions de segments de mémoire paragée UNIX ) . Ces fonctions ne fonctionnent pas sous Windows , car ce système d ' exploitation ne supporte pas la mémoire partagée . Pour utiliser les fonctions shmop , compilez PHP avec l ' option --enable-shmop parameter .

Toutes les fonctions décrites ci-dessous commencent par shm_ poru les versions jusqu ' à PHP 4.0.3 , mais en PHP 4.0.4 et plus récent , elles sont préfixées par shmop_ .

Exemple 1 . Introduction à la mémoire partagée

 
?php

 
/

 
/

 
Crée

 
100

 
octets

 
de

 
mémoire

 
partagée

 
avec

 
/

 
/

 
un

 
identifiant

 
système

 
"

 
0xff3

 
"

 
$shm_id

 
=

 
shmop_open(0xff3

 
,

 
"c"

 
,

 
0644

 
,

 
100)

 
;

 
if(!$shm_id

 
)

 
{

 
echo

 
"Impossible

 
de

 
créer

 
la

 
mémoire

 
partagée\n"

 
;

 
}

 
/

 
/

 
Lire

 
la

 
taille

 
de

 
la

 
mémoire

 
partagée

 
$shm_size

 
=

 
shmop_size($shm_id)

 
;

 
echo

 
"Un

 
bloc

 
de

 
SHM

 
de

 
taille

 
".$shm_size

 
.

 
"

 
a

 
été

 
créé.\n"

 
;

 
/

 
/

 
Ecriture

 
d'une

 
chaîne

 
de

 
test

 
dans

 
ce

 
segment

 
$shm_bytes_written

 
=

 
shmop_write($shm_id

 
,

 
"mon

 
bloc

 
de

 
mémoire

 
partagée"

 
,

 
0)

 
;

 
if($shm_bytes_written

 
!=

 
strlen("mon

 
bloc

 
de

 
mémoire

 
partagée")

 
)

 
{

 
echo

 
"Impossible

 
d'écrire

 
toutes

 
les

 
données

 
en

 
mémoire\n"

 
;

 
}

 
/

 
/

 
Lecture

 
du

 
segment

 
$my_string

 
=

 
shmop_read($shm_id

 
,

 
0

 
,

 
$shm_size)

 
;

 
if(!$my_string

 
)

 
{

 
echo

 
"Impossible

 
de

 
lire

 
toutes

 
les

 
données

 
en

 
mémoire\n"

 
;

 
}

 
echo

 
"Les

 
données

 
mis

 
en

 
mémoire

 
partagées

 
sont

 
:

 
".$my_string

 
."\n"

 
;

 
/

 
/Maintenant

 
,

 
effacons

 
le

 
bloc

 
,

 
et

 
fermons

 
le

 
segment

 
de

 
mémoire

 
if(!shmop_delete($shm_id)

 
)

 
{

 
echo

 
"Impossible

 
d'effacer

 
le

 
segment

 
de

 
mémoire"

 
;

 
}

 
shmop_close($shm_id)

 
;

 
?





Table des matières
shmop_close -- Ferme un bloc de mémoire partagée
shmop_delete -- Détruit un bloc de mémoire partagée
shmop_open -- Crée ou ouvre un bloc de mémoire partagée
shmop_read -- Lit un bloc
shmop_size -- Lire la taille du bloc de mémoire partagée
shmop_write -- Ecrire dans un bloc de mémoire partagée