shmop_write

(PHP 4 >= 4.0.4, PHP 5)

shmop_writeЗапись данных в разделяемую память

Описание

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

shmop_write() записывает строковые данные в участок разделяемой памяти.

Список параметров

shmid

Идентификатор участка памяти, возвращаемый функцией shmop_open()

data

Строковые данные для размещения в памяти

offset

Определяет, в каком месте участка памяти следует начать запись данных.

Возвращаемые значения

Размер записанных данных, переданных через параметр data, или FALSE при отказе.

Примеры

Пример #1 Запись данных в участок разделяемой памяти

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

В данном примере в память помещается содержимое строковой переменной $my_string, после чего переменная $shm_bytes_written будет содержать размер фактически записанных данных.

Смотрите также

  • shmop_read() - Чтение данных из участка разделяемой памяти

Коментарии

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

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