shmop_write
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_write — Write data into shared memory block
说明
shmop_write() will write a string into shared memory block.
参数
-
shmop
-
The shared memory block identifier created by shmop_open()
-
data
-
A string to write into shared memory block
-
offset
-
Specifies where to start writing data inside the shared memory segment.
返回值
The size of the written data
.
更新日志
版本 | 说明 |
---|---|
8.0.0 |
Prior to PHP 8.0.0, false was returned on failure.
|
8.0.0 |
shmop expects a Shmop
instance now; previously, a resource was expected.
|
范例
示例 #1 Writing to shared memory block
<?php
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>
This example will write data inside $my_string
into
shared memory block, $shm_bytes_written
will contain
the number of bytes written.

User Contributed Notes 1 note
radupb at yahoo dot com ¶
1 year ago
I guess pack-unpack are the handy functions for encoding/decoding data as/from a binary string for shmop_write/shmop_read. Example:
$format='LLLLSSCCCC'; //data format for pack
$key=1;
if( !($shmid=shmop_open($key,'n',0660,30)) )
die('shmop_open failed.');
//my data to encode:
$hd=array('ALIVE1'=>1,'ALIVE2'=>2,'ALIVE3'=>3,'ALIVE4'=>4,
'CRTPTR'=>5,'CRTSEQ'=>6,
'CTW'=>7,'LOCK'=>8,'PLAY'=>9,'MISS'=>10
);
$tmp=pack( $format, $hd['ALIVE1'],$hd['ALIVE2'],$hd['ALIVE3'],$hd['ALIVE4'], $hd['CRTPTR'],$hd['CRTSEQ'],$hd['CTW'],$hd['LOCK'],$hd['PLAY'],$hd['MISS'] );
if( ($w=shmop_write($shmid,$tmp,0))!=24 )
die('write error $w='.$w);
And reading from some other process:
$key=1;
if( !($shmid=shmop_open($key,'w',0,0)) )
die('shmop_open failed.');
$formatR='L4ALIVE/SCRTPTR/SCRTSEQ/CCTW/CLOCK/CPLAY/CMISS'; //data format for unpack
$hd=unpack( $formatR, shmop_read( $shmid,0,24) );
echo'hd:<pre>';print_r($hd);echo'</pre>';