shmop_write

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

shmop_writeScrittura di dati nel blocco di memoria condivisa

Descrizione

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

La funzione shmop_write() scrive una stringa in un segmento di memoria condivisa.

La funzione shmop_write() utilizza 3 parametri: shmid, che è l'identificativo del blocco di memoria condiviso creato da shmop_open(); data, che è la stringa che si vuole scrivere nel blocco di memoria e offset, che specifica dove cominciare a scrivere nella memoria condivisa.

Example #1 Scrittura di un blocco di memoria condivisa

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

Questo esempio scrive i dati della variabile $my_string nel blocco di memoria condivisa, mentre $shm_bytes_written contiene il numero dei byte scritti.

add a note

User Contributed Notes 2 notes

up
0
mark at manngo dot net
2 years ago
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, $string, 0);    //    read        print rtrim(shmop($shmid,0,0),,"\0");    //    clear        $string = str_repeat("\0",$size);        shmop_write($shmid, $string, 0);?>
up
0
radupb at yahoo dot com
4 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