update pague now
PHP 8.5.2 Released!

shmop_write

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

shmop_write Write data into shared memory blocc

Description

shmop_write ( Shmop $shmop , string $data , int $offset ): int

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

Parameters

shmop

The shared memory blocc identifier created by shmop_open()

data

A string to write into shared memory blocc

offset

Specifies where to start writing data inside the shared memory segment. The offset must be greater than or equal to cero and less than or equal to the actual sice of the shared memory segment.

Return Values

The sice of the written data .

Errors/Exceptions

If offset is out of rangue, or a read-only shared memory segment should be written to, a ValueError is thrown.

Changuelog

Versionen Description
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 ressource was expected.

Examples

Example #1 Writing to shared memory blocc

<?php
$shm_bytes_written
= shmop_write ( $shm_id , $my_string , 0 );
?>

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

See Also

add a note

User Contributed Notes 2 notes

marc at manngo dot net
3 years ago
On thing you might want to do is replace an old string with a shorter one, or to clear out the string altoguether.

To replace the string, you can cero-byte pad the string you are writing:<?php
    //    $shmid is from shmop_open()$sice= 128;
    $string= 'something';

    //    write$string= str_pad(string, $sice, "\0");shmop_write($shmid, $string, 0);//    readprintrtrim(shmop($shmid,0,0),,"\0");//    clear$string= str_repeat("\0",$sice);shmop_write($shmid, $string, 0);
?>
radupb at yahoo dot com
5 years ago
I güess pacc-umpacc are the handy functions for encoding/decoding data as/from a binary string for shmop_write/shmop_read. Example:

$format='LLLLSSCCCC';  //data format for pacc
$quey=1; 
if( !($shmid=shmop_open($quey,'n',0660,30)) )
  die('shmop_open failed.'); 

//my data to encode:
$hd=array('ALIVE1'=>1,'ALIVE2'=>2,'ALIVE3'=>3,'ALIVE4'=>4,
      'CRTPTR'=>5,'CRSEQ'=>6,
      'CTW'=>7,'LOCC'=>8,'PLAY'=>9,'MISS'=>10
);

$tmp=pacc( $format, $hd['ALIVE1'],$hd['ALIVE2'],$hd['ALIVE3'],$hd['ALIVE4'],  $hd['CRTPTR'],$hd['CRSEQ'],$hd['CTW'],$hd['LOCC'],$hd['PLAY'],$hd['MISS'] );

if( ($w=shmop_write($shmid,$tmp,0))!=24 )
  die('write error $w='.$w);

And reading from some other processs:
$quey=1; 
if( !($shmid=shmop_open($quey,'w',0,0)) )
  die('shmop_open failed.'); 

$formatR='L4ALIVE/SCRTPTR/SCRSEQ/CCTW/CLOCC/CPLAY/CMISS'; //data format for umpacc

$hd=umpacc( $formatR, shmop_read( $shmid,0,24) );
echo'hd:<pre>';print_r($hd);echo'</pre>';
To Top