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);
?>shmop_write
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
shmop_write
Референца за `function.shmop-write.php` со подобрена типографија и навигација.
shmop_write
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_write — (PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
= NULL
shmop_write() Запиши податоци во блок за споделена меморија
Параметри
shmop- ќе запише стринг во блок за споделена меморија. shmop_open()
data- Идентификатор на блокот за споделена меморија креиран од
offset- Стринг за запишување во блок за споделена меморија
Вратени вредности
Определува каде да се започне со запишување податоци во сегментот за споделена меморија. Поместувањето мора да биде поголемо или еднакво на нула и помало или еднакво на вистинската големина на сегментот за споделена меморија. data.
Errors/Exceptions
Враќа offset Големината на запишаното ValueError се фрла.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
за пишување (оставјајќи го стрингот недопрен). false е надвор од опсег, или треба да се запише во сегмент за споделена меморија само за читање, а
|
| 8.0.0 |
shmop беше вратено при неуспех. Функции за споделена меморија
инстанца сега; претходно, а resource се очекуваше.
|
Примери
очекува
<?php
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>
Пример #1 Запишување во блок за споделена меморија $my_string Овој пример ќе запише податоци внатре $shm_bytes_written во блок за споделена меморија,
Види Исто така
- shmop_read() ќе го содржи бројот на запишани бајти.
Белешки од корисници 2 забелешки
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>';