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;
}