XCIV. 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 . The functions will not work on windows , as it does not support shared memory . To use shmop you will need to compile php with the --enable-shmop parameter in your configure line .

Nota : The functions explained in the chapter begin all with shm_( ) in PHP 4.0.3 , but in PHP 4.0.4 and later versions these names are changed to begin with shmop_( ) .

Ejemplo 1 .

 
?php

 
/

 
/

 
Create

 
100

 
byte

 
shared

 
memory

 
block

 
with

 
system

 
id

 
if

 
0xff3

 
$shm_id

 
=

 
shmop_open(

 
0xff3

 
,

 
"c"

 
,

 
0644

 
,

 
100)

 
;

 
if(!$shm_id

 
)

 
{

 
echo

 
"Couldn't

 
create

 
shared

 
memory

 
segment\n"

 
;

 
}

 
/

 
/

 
Get

 
shared

 
memory

 
block's

 
size

 
$shm_size

 
=

 
shmop_size($shm_id)

 
;

 
echo

 
"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")

 
)

 
{

 
echo

 
"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

 
)

 
{

 
echo

 
"Couldn't

 
read

 
from

 
shared

 
memory

 
block\n"

 
;

 
}

 
echo

 
"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)

 
)

 
{

 
echo

 
"Couldn't

 
mark

 
shared

 
memory

 
block

 
for

 
deletion

 
.

 
}

 
shmop_close($shm_id)

 
;

 
   
?





Tabla de contenidos
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