shmop_write

(PHP 4 >= 4.0.4, PHP 5)

shmop_writeWrite data into shared memory block

Description

int shmop_write ( int $shmid , string $data , int $offset )

shmop_write() will write a string into shared memory block.

Parameters

shmid

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.

Return Values

The size of the written data, or FALSE on failure.

Examples

Example #1 Writing to shared memory block

<?php
$shm_bytes_written 
shmop_write($shm_id$my_string0);
?>

This example will write data inside $my_string into shared memory block, $shm_bytes_written will contain the number of bytes written.

See Also

Коментарии

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>';
2020-11-30 11:13:11
http://php5.kiev.ua/manual/ru/function.shmop-write.html
On thing you might want to do is replace an old string with a shorter one, or to clear out the string altogether.

To replace the string, you can zero-byte pad the string you are writing:

<?php
   
//    $shmid is from shmop_open()
   
$size 128;
   
$string 'something';

   
//    write
       
$string str_pad(string$size"\0");
       
shmop_write($shmid$string0);

   
//    read
       
print rtrim(shmop($shmid,0,0),,"\0");

   
//    clear
       
$string str_repeat("\0",$size);
       
shmop_write($shmid$string0);
?>
2022-12-07 09:55:36
http://php5.kiev.ua/manual/ru/function.shmop-write.html

    Поддержать сайт на родительском проекте КГБ