<< Back to man.ChinaUnix.net

CXIII. Shared Memory Functions


Shmop is an easy to use set of functions that allows PHP to read, write, create and delete Unix shared memory segments.

注: Versions of Windows previous to Windows 2000 do not support shared memory. Under Windows, Shmop will only work when PHP is running as a web server module, such as Apache or IIS (CLI and CGI will not work).

注: In PHP 4.0.3, these functions were prefixed by shm rather than shmop.




To use shmop you will need to compile PHP with the --enable-shmop parameter in your configure line.


本扩展模块在 php.ini 中未定义任何设置指令。



例子 1. Shared Memory Operations Overview

// Create 100 byte shared memory block with system id if 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if (!
$shm_id) {
"Couldn't create shared memory segment\n";

// Get shared memory block's size
$shm_size = shmop_size($shm_id);
"SHM Block Size: " . $shm_size . " has been created.\n";

// Lets write a test string into shared memory
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if (
$shm_bytes_written != strlen("my shared memory block")) {
"Couldn't write the entire length of data\n";

// Now lets read the string back
$my_string = shmop_read($shm_id, 0, $shm_size);
if (!
$my_string) {
"Couldn't read from shared memory block\n";
"The data inside shared memory was: " . $my_string . "\n";

//Now lets delete the block and close the shared memory segment
if (!shmop_delete($shm_id)) {
"Couldn't mark shared memory block for deletion.";

shmop_close -- Close shared memory block
shmop_delete -- Delete shared memory block
shmop_open -- Create or open shared memory block
shmop_read -- Read data from shared memory block
shmop_size -- Get size of shared memory block
shmop_write -- Write data into shared memory block