note 64096 deleted from function.flock by danbrown

From: Date: Mon, 18 May 2009 00:38:39 +0000
Subject: note 64096 deleted from function.flock by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-155400@lists.php.net to get a copy of this message
Note Submitter: christian dot wessels at web dot de ---- dranger at export dash japan dot com is right, i once had the problem of a race condition in a database action because the script was very cpu-intensive so i looked around for some kind of mutex. I finally came up to this which uses no files (and no flock) and survived all of my tests (on linux): <?php function generate_shmkey ($string) { // Private: output unique integer based on $string return abs(crc32($string)); } function vmutex_lock ($lockId, $maxAcquire = 1) { // Public: take cover of semaphores and lock when possible global $shm_handle; $shm_key = generate_shmkey($lockId); if ($shm_handle = sem_get($shm_key, $maxAcquire)) { if (sem_acquire($shm_handle)) { return true; } } return false; } function vmutex_unlock ($lockId) { // Public: remove lock global $shm_handle; return sem_release($shm_handle); } ?>

« previous php.notes (#155400) next »