PHPのお勉強!

PHP TOP

shm_remove

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

shm_removeUnix システムから共有メモリを削除する

説明

shm_remove(SysvSharedMemory $shm): bool

shm_remove() は、共有メモリ shm を削除します。 全てのデータは破棄されます。

パラメータ

shm

shm_attach() が返す 共有メモリセグメント。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 引数 shm は、 SysvSharedMemory クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソースが期待されていました。

参考

add a note

User Contributed Notes 3 notes

up
1
HansRich
10 years ago
WARNING: this function WILL NOT destroy the memory segment if there are other processes attached to it, but it will return TRUE anyways!

You will have to try to access the segment again after destroying it to make sure it was relly destroyed.
up
1
aaron DURP segura DURP gmail DURP com
18 years ago
It appears that you must be connected to the shm segment in order to remove it.

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

works, while

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

produces "Warning: shm_remove(): The parameter is not a valid shm_identifier ..."
up
-2
cu at ulakbim dot gov dot tr
24 years ago
Though it says **shm_identifier** in
int shm_remove(int shm_identifier);
and
shm_attach() returns an **id** that that can be used to access the System V...

a snippet like this:
<?php
$key
= 1234;
$shm=shm_attach($key);
// do whatever...
shm_remove($shm);
?>

produces an error like
Warning: 2(which is the value of $shm) is not a existing SysV shared memory key in /usr/cu/web/sema.php on line 44...

The documentation confused me a bit. I thought shm_remove would get the shm handle/id that returns from shm_attach, not the key given to shm_attach. So, use instead:
shm_remove($key);

which is what is intended indeed.
To Top