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.
Note: 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).
Note: 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.
No se necesitan bibliotecas externas para construir esta extensió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.
Esta extensión no tiene directivas de configuración en php.ini.
Esta extensión no tiene ninguna constante definida.
Example#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ñ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);
?>