shmop_read() 读取并返回整个内存段的数据。如果您只处理字符串,这并没有用。如果您需要从共享内存读取字符串,请对 shmop_read() 的结果调用 str_from_mem()。类似地,当将字符串写入内存(而不是二进制数据)时,在将值传递给 shmop_write() 之前,使用 str_to_nts() 为字符串添加 null 终止符。
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;
}