Доброго дня всем. Столкнулся с вот какой проблемой. Есть php-скрипт, который обрабатывает запрос, веб-сервер - Апач. Возникла необходимость ограничить количество одновременно выполняемых экземпляров скрипта всего двумя, отодвигая начало выполнения следующего экземпляра скрипта до момента, пока не закончится один из уже выполняемых. Скрипт выполняется в среднем 30 миллисекунд, так что за секунду, при последовательном выполнении в два потока (ибо всего два экземпляра можно сразу) будет обработано не более 60-70 запросов. Реально зарегистрированный максимум в часы пик - 31 запрос в секунду, так что - двойной запас, типа, имеем. Воспользовался для решения задачи семафорами, а именно - вот так. <? $key=2; $limit=2; $sem_id=sem_get($key,$limit); sem_acquire($sem_id); /* тут собственно тело скрипта */ if ( $sem_id ) { sem_release($sem_id); sem_remove($sem_id); } ?> Система работает на выделенном сервере. И вот все работает, запросы действительно выстраиваются в очередь, среднее время выполнения скрипта сократилось раза в два, LA в три раза упал НО! За сутки сервак (FreeBSD) четыре раза вошел в полный ступор, вплоть до необходимости жесткого ребута. Вход в ступор проиходил каждый раз быстро, не осталяя никакой инфорации ни в каких логах. И это при том, что последние три месяца система работала без единой перезагрузки, как часики. После первых двух ребутов увеличил $limit до четырех. Эффект тот же. И вот вопрос - ГДЕ ТЕ ГРАБЛИ, на которые я наступил? Поиски по сети ответа не дали... Буду признателен за любую толковую наводку. Юрий