警告:如果还有其他进程附加到该内存段,此函数将不会销毁该内存段,但仍会返回 TRUE!
您必须在销毁它之后尝试再次访问该段,以确保它确实被销毁了。
(PHP 4, PHP 5, PHP 7, PHP 8)
shm_remove — 从 Unix 系统中删除共享内存
看起来您必须连接到 shm 段才能将其删除。
<?php
shm_remove($shm);
shm_detach($shm);
?>
有效,而
<?php
shm_detach($shm);
shm_remove($shm);
?>
会产生“警告:shm_remove(): 参数不是有效的 shm_identifier...”
尽管它在
int shm_remove(int shm_identifier);
和
shm_attach() 返回一个 **id**,该 id 可用于访问 System V...
这样的代码片段
<?php
$key = 1234;
$shm=shm_attach($key);
// 做任何事...
shm_remove($shm);
?>
会产生类似的错误
警告:2(这是 $shm 的值)不是 /usr/cu/web/sema.php 第 44 行中存在的 SysV 共享内存键...
文档让我有点困惑。我以为 shm_remove 会获取 shm_attach 返回的 shm 句柄/id,而不是给 shm_attach 的键。因此,请改用
shm_remove($key);
这才是真正的目的。