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 ..."
shm_remove
(PHP 4, PHP 5)
shm_remove — Entfernt ein Shared Memory-Segment unter UNIX
Beschreibung
bool shm_remove
( resource
$shm_identifier
)
shm_remove() entfernt das durch
shm_identifier angegebene Shared Memory-Segment.
Die in diesem Segment abgelegten Daten gehen dabei verloren.
Parameter-Liste
-
shm_identifier -
Ein Shared Memory-Ressourcehandle, wie es von shm_attach() zurückgegeben wird.
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
aaron DURP segura DURP gmail DURP com ¶
6 years ago
cu at ulakbim dot gov dot tr ¶
13 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.
