Funciones de Memoria Compartida

CXXXVIII. Funciones de Memoria Compartida

Introducci贸n

Shmop es un conjunto de funciones que permiten a PHP leer, escribir, crear y borrar de forma sencilla segmentos de memoria compartida de tipo UNIX.

Nota: Se debe tener en cuenta que las versiones de Windows anteriores a Windows 2000 no soportan el uso de memoria compartida. En sistemas Windows, Shmop solamente funciona cuando PHP se ejecuta como m贸dulo de un servidor web como Apache o IIS (por tanto, no funciona si PHP se ejecuta como CGI o desde linea de comandos CLI).

Nota: En PHP 4.0.3, el nombre de todas estas funciones estaba precedido por el prefijo shm y actualmente lo est谩n por el prefijo shmop.

Requisitos

No se necesitan bibliotecas externas para construir esta extensi贸n

Instalaci贸n

Para usar las funciones de memoria compartida, se debe a帽adir el par谩metro --enable-shmop a las opciones de configuraci贸n de PHP.

Configuraci贸n en tiempo de ejecuci贸n

Esta extensi贸n no tiene directivas de configuraci贸n en php.ini.

Constantes predefinidas

Esta extensi贸n no tiene ninguna constante definida.

Ejemplos

Ejemplo 1. Resumen de las operaciones con Memoria Compartida

<?php
   
// Creacion de un segmento de memoria compartida de 100 bytes y con un
// identificador igual a 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if(!
$shm_id) {
    echo
"No se pudo crear el segmento de memoria compartida\n";
}

// Obtencion del tama&ntilde;o del segmento de memoria compartida
$shm_size = shmop_size($shm_id);
echo
"Segmento de memoria: se han reservado ".$shm_size. " bytes.\n";

// Escritura de una cadena de texto de prueba en la memoria compartida
$shm_bytes_written = shmop_write($shm_id, "mi segmento de memoria compartida",
0);
if(
$shm_bytes_written != strlen("mi segmento de memoria compartida")) {
    echo
"No se pudieron escribir todos los datos indicados\n";
}

// Lectura de la cadena de texto de prueba
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!
$my_string) {
    echo
"No se pudo leer el segmento de memoria compartida\n";
}
echo
"Los datos que contenia el segmento de memoria compartida son los
siguientes:"
.$my_string."\n";

// Borrado y eliminacion del segmento de memoria compartida
if(!shmop_delete($shm_id)) {
    echo
"No se pudo borrar el segmento de memoria compartida.";
}
shmop_close($shm_id);
   
?>

Tabla de contenidos
shmop_close -- Cierra un segmento de memoria compartida
shmop_delete -- Borra un segmento de memoria compartida
shmop_open -- Crea o abre un segmento de memoria compartida
shmop_read -- Lee un segmento de memoria compartida
shmop_size -- Obtiene el tama帽o de un segmento de memoria compartida
shmop_write -- Escribe datos en un segmento de memoria compartida