Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Приветствую.

Нужно исправить код, который работает с семафорами в 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

В общем, нужно как-то с семафорами разобраться или предложить другое решение проблемы с одновременным доступом.

15 лет назад
gribodemon
Григорий 
40 летРоссия
15 лет в сервисе
Был
15 лет назад
9 отзывов