shmop_write

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

shmop_writeSchreibt Daten in einen gemeinsamen Speicherbereich

Beschreibung

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

shmop_write() schreibt Daten in einen gemeinsamen Speicherbereich.

Parameter-Liste

shmop

Der Bezeichner für den gemeinsamen Speicherbereich, der von shmop_open() erzeugt wurde.

data

Ein String, der in den gemeinsamen Speicherbereich geschrieben werden soll.

offset

Gibt an, von welcher Position ab Daten in den gemeinsamen Speicherbereich geschrieben werden sollen. Der Offset muss größer oder gleich Null und kleiner oder gleich der tatsächlichen Größe des gemeinsamen Speicherbereichs sein.

Rückgabewerte

Die Länge der geschriebenen Daten data oder false, falls ein Fehler auftrat.

Fehler/Exceptions

Wenn offset außerhalb des zulässigen Bereichs liegt oder in einen schreibgeschützten gemeinsamen Speicherbereich geschrieben werden soll, wird ein ValueError ausgelöst.

Changelog

Version Beschreibung
8.0.0 Vor PHP 8.0.0 wurde bei einem Fehler false zurückgegeben.
8.0.0 shmop erwartet nun eine Shmop-Instanz; vorher wurde eine resource erwartet.

Beispiele

Beispiel #1 In den gemeinsamen Speicherbereich schreiben

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

In diesem Beispiel werden die Daten der Variablen $my_string in den gemeinsamen Speicherbereich geschrieben. Die Variable $shm_bytes_written enthält die Anzahl der geschriebenen Bytes.

Siehe auch

  • shmop_read() - Liest Daten aus einem gemeinsamen Speicherbereich

add a note add a note

User Contributed Notes 1 note

up
0
radupb at yahoo dot com
3 years 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>';
To Top