XCVI. Mémoire partagée

Introduction

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 partagée UNIX). Ces fonctions ne fonctionnent pas sous Windows, car ce système d'exploitation ne supporte pas la mémoire partagée. Toutefois, depuis Windows 2000, en activant la librairie php_shmop.dll dans votre fichier php.ini vous activerez aussi cette fonctionnalité.

Note : En PHP 4.0.3, ces fonctions étaient préfixées avec shm au lieu de shmop.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Pour utiliser les fonctions shmop, compilez PHP avec l'option --enable-shmop.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

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

<?php
   
// Cr&eacute;e 100 octets de m&eacute;moire partag&eacute;e avec
// un identifiant syst&egrave;me "0xff3"
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if(!
$shm_id) {
    echo
"Impossible de cr&eacute;er la m&eacute;moire partag&eacute;e\n";
}

// Lire la taille de la m&eacute;moire partag&eacute;e
$shm_size = shmop_size($shm_id);
echo
"Un bloc de SHM de taille ".$shm_size. " a &eacute;t&eacute; cr&eacute;&eacute;.\n";

// Ecriture d'une cha&icirc;ne de test dans ce segment
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if(
$shm_bytes_written != strlen("Mon bloc de m&eacute;moire partag&eacute;e")) {
    echo
"Impossible d'&eacute;crire toutes les donn&eacute;es en m&eacute;moire\n";
}

// Lecture du segment
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!
$my_string) {
    echo
"Impossible de lire toutes les donn&eacute;es en m&eacute;moire\n";
}
echo
"Les donn&eacute;es mis en m&eacute;moire partag&eacute;es sont : ".$my_string."\n";

//Maintenant, effacons le bloc, et fermons le segment de m&eacute;moire
if(!shmop_delete($shm_id)) {
    echo
"Impossible d'effacer le segment de m&eacute;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