PHP + проблема с семафорами
Приветствую.
Нужно исправить код, который работает с семафорами в PHP.
Семафоры используются для предотвращения одновременного доступа к БД.
Вот код:
function free_sem ($sem_id) {
if (!sem_release($sem_id)) {
//echo "sem_release(\"$sem_id\") fails!";
}
if (!sem_remove($sem_id)) {
//echo "sem_remove(\"$sem_id\") fails!";
}
}
$SEMKEY = 0x100;
$sem_id = sem_get($SEMKEY, 1);
if ( $sem_id === false ) {
echo "sem_get() fails!";
exit;
}
if ( !sem_acquire($sem_id) ) {
echo "sem_acquire(\"$sem_id\") fails!";
sem_remove($sem_id);
exit;
}
// ... do stuff with DB ...
free_sem($sem_id);
Проблема заключается в том, что _иногда_ возникает ошибка на функции sem_acquire().
Всё более подробно описано в моём посте. Тут: hxxp://www.php.ru/forum/viewtopic.php?t=19564
В общем, нужно как-то с семафорами разобраться или предложить другое решение проблемы с одновременным доступом.