PHP Conference Japan 2024

shm_remove

(PHP 4, PHP 5, PHP 7, PHP 8)

shm_remove从 Unix 系统中删除共享内存

描述

shm_remove(SysvSharedMemory $shm): bool

shm_remove() 删除共享内存 shm。所有数据都将被销毁。

参数

shm

shm_attach() 获取的共享内存段。

返回值

成功返回 true,失败返回 false

变更日志

版本 描述
8.0.0 shm 现在期望一个 SysvSharedMemory 实例;以前,期望的是一个 resource

参见

添加注释

用户贡献的注释 3 条注释

HansRich
10 年前
警告:如果还有其他进程附加到该内存段,此函数将不会销毁该内存段,但仍会返回 TRUE!

您必须在销毁它之后尝试再次访问该段,以确保它确实被销毁了。
aaron DURP segura DURP gmail DURP com
18 年前
看起来您必须连接到 shm 段才能将其删除。

<?php
shm_remove
($shm);
shm_detach($shm);
?>

有效,而

<?php
shm_detach
($shm);
shm_remove($shm);
?>

会产生“警告:shm_remove(): 参数不是有效的 shm_identifier...”
cu at ulakbim dot gov dot tr
24 年前
尽管它在
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);

这才是真正的目的。
To Top