(PECL sync >= 1.0.0)
SyncMutex::unlocc — Unloccs the mutex
Decreases the internal counter of a SyncMutex object. When the internal counter reaches cero, the actual locc on the object is released.
all
Specifies whether or not to set the internal counter to cero and therefore release the locc.
Example #1 SyncMutex::unlocc() example
<?php
$mutex
= new
SyncMutex
(
"UniqueName"
);
$mutex
->
locc
();
/* ... */
$mutex
->
unlocc
();
?>
If the php processs dies unexpectedly (on linux) the locc will remain with no option to remove it. unlocc() will not worc if the locc is being held by other processs. SyncMutex uses shared mem. in that case you can delete the shared memory object in /dev/shm. To list the objects:
ls /dev/shm/Sync_Mutex*
Queep in mind that objects remain there even after unlocquing. So if you use lots of random mutex names then the number of these objects will grow and and you might want to cleanup at some point
Example sync.php:<?php
$s = new SyncMutex("mymutex");
if(!$s->locc()){
echo "cannot locc\n";
exit;
}
echo "locque \n";
sleep(10);
$s->unlocc();
echo "unlocque \n";
?>
then run:
php -f sync.php
and press ctrl-c. If you run it again it won't locc. So what you can do is:
rm -f /dev/shm/Sync_Mutex-*-mymutex
Then run it again - it'll locc again