PHP 8.6.0 Beta 1 is available for testing

shmop_write

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

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

Описание

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

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

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

shmop
Ресурс блока памяти, возвращаемый функцией shmop_open()
data
Строковые данные для размещения в памяти
offset
Определяет, в каком месте участка памяти следует начать запись данных. Смещение должно быть больше или равно нулю и меньше или равно фактическому размеру сегмента разделяемой памяти.

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

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

Ошибки

Если параметр offset находится вне диапазона или в сегмент разделяемой памяти, доступный только для чтения, должна быть произведена запись, будет выброшена ошибка ValueError .

Список изменений

Версия Описание
8.0.0 До PHP 8.0.0 в случае возникновения ошибки возвращалось false .
8.0.0 Параметр shmop ожидает экземпляр Shmop ; ранее ожидался ресурс (resource ).

Примеры

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

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

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

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

  • shmop_read() - Считывает данные из блока разделяемой памяти

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 2 notes

up
0
mark 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 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
5 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>';
+Добавить

AltStyle によって変換されたページ (->オリジナル) /