shmop_read() 會讀取並返回整個記憶體區段的資料。如果您只是在處理字串,這沒有用。如果您需要從共享記憶體讀取字串,請對 shmop_read() 的結果呼叫 str_from_mem()。同樣地,在將字串寫入記憶體時(而不是二進位資料),請使用 str_to_nts() 將字串以 null 終止,再將值傳遞給 shmop_write()。
function str_to_nts($value) {
return "$value\0";
}
function str_from_mem(&$value) {
$i = strpos($value, "\0");
if ($i === false) {
return $value;
}
$result = substr($value, 0, $i);
return $result;
}