XCIV. Funkce pro práci se sdílenou pamětí

Shmop snadno použitelná sada funkcí , která PHP umožňuje číst , zapisovat , vytvářet a mazat segmenty UNIXové sdílené paměti . Tyto funkce na Windows nefungují , protože tento systém nepodporuje sdílenou paměť . Pokud chcete shmop používat , budete muset PHP zkompilovat s --enable-shmop .

Poznámka : Názvy funkcí popisovaných v této kapitole začínají v PHP 4.0.3 na shm_( ) , ale od PHP 4.0.4 se jejich názvy změnily na shmop_( ) .

Příklad 1 . Přehled operací se sdílenou pamětí

 
?php

 
/

 
/

 
Vytvořit

 
100

 
bytový

 
blok

 
sdílené

 
paměti

 
se

 
system

 
id

 
0xff3

 
$shm_id

 
=

 
shmop_open(

 
0xff3

 
,

 
"c"

 
,

 
0644

 
,

 
100)

 
;

 
if(!$shm_id

 
)

 
{

 
echo

 
"Nepodařilo

 
se

 
vytvořit

 
segment

 
sdílené

 
paměti\n"

 
;

 
}

 
/

 
/

 
Zjistit

 
velikost

 
bloku

 
sdílené

 
paměti

 
$shm_size

 
=

 
shmop_size($shm_id)

 
;

 
echo

 
"SHM

 
blok

 
o

 
velikosti

 
:

 
".$shm_size

 
.

 
"

 
byl

 
vytvořen.\n"

 
;

 
/

 
/

 
Zapíšeme

 
do

 
sdílené

 
paměti

 
zkušební

 
řetězec

 
$shm_bytes_written

 
=

 
shmop_write($shm_id

 
,

 
"my

 
shared

 
memory

 
block"

 
,

 
0)

 
;

 
if($shm_bytes_written

 
!=

 
strlen("můj

 
blok

 
sdílené

 
paměti")

 
)

 
{

 
echo

 
"Nepodařilo

 
se

 
zapsat

 
kompletní

 
data\n"

 
;

 
}

 
/

 
/

 
Načteme

 
řetězec

 
zpátky

 
$my_string

 
=

 
shmop_read($shm_id

 
,

 
0

 
,

 
$shm_size)

 
;

 
if(!$my_string

 
)

 
{

 
echo

 
"Nepodařilo

 
se

 
číst

 
z

 
bloku

 
sdílené

 
paměti\n"

 
;

 
}

 
echo

 
"Data

 
ve

 
sdílené

 
paměti

 
byla

 
:

 
".$my_string

 
."\n"

 
;

 
/

 
/Smažeme

 
tento

 
blok

 
a

 
zavřeme

 
segment

 
sdílené

 
paměti

 
if(!shmop_delete($shm_id)

 
)

 
{

 
echo

 
"Nepodařilo

 
se

 
smazat

 
blok

 
sdílené

 
paměti

 
."

 
;

 
}

 
shmop_close($shm_id)

 
;

 

?





Obsah
shmop_close -- Zavřít blok sdílené paměti
shmop_delete -- Smazat blok sdílené paměti
shmop_open -- Vytvořit nebo otevřít blok sdílené paměti
shmop_read -- Přečíst data z bloku sdílené paměti
shmop_size -- Get size of shared memory block
shmop_write -- Zapsat data do bloku sdílené paměti