19.6. Семафоры ОС System V
PHP имеет расширение, предназначенное для работы с семафорами ОС System V. Если ваша операционная система поддерживает такую возможность, вы тоже можете добавить это расширение в установку PHP. На время написания этой книги работу с механизмами семафоров поддерживали только операционные системы Solaris, Linux и AIX.
Семафоры являются способом управления ресурсами, которые могли бы использоваться одним объектом, аналогично тому, как сигнальные флаги используются на кораблях для обмена информацией. Идею использования целочисленного счетчика для управления ресурсами операционных систем впервые предложил в начале 1960-х годов Эдсгер Дейсктра (Edsger Dijkstra).
Полное объяснение механизма работы семафоров выходит за рамки настоящей книги. Семафоры входят в стандартный курс по вычислительным системам в любом колледже, кроме того, описание механизма семафоров приводится во многих описаниях операционных систем. На Web-узле whatis.com <http://www.whatis.com/> в описании механизма семафоров сделана ссылка на книгу Ричарда Стивенса Unix Network Programming, опубликованную издательством Prentice Hall. Второе издание этой книги было опубликовано в двух томах в 1997 году.
boolean sem_acquire(integer identifier)
Функция sem_acquire (листинг 19.20) делает попытку запроса семафора, иден­тифицированного функцией sem_get. Эта функция блокирует работу до тех пор, пока семафор не будет получен. Существует реальная опасность вечного ожидания семафора. Одним из способов избежать этого является ограничение времени ожидания с последующей попыткой получить его еще раз. В этом случае значение семафора никогда не уменьшается.
Если блокировка семафора не будет снята с помощью функции sem_release, PHP снимет ее сам, выдав при этом предупреждение.
Разное:Apache,IMAP,MnoGoSearch,OpenSSL
integer sem_get(integer key, integer maximum, integer permission)
Функция sem_get предназначена для получения идентификатора семафора. Если семафора не существует, он будет создан. Необязательные аргументы maximum и permission используются только во время создания семафора. Аргумент maximum управляет количеством приемов семафора. По умолчанию его значение равно 1. Аргумент permission управляет привилегиями чтения и записи в семафор подобно тому, как это делается с файлами. По умолчанию его значение равно 0666 , что равносильно доступу с правами чтения и записи для всех пользователей. Аргумент key используется для идентификации процесса семафора среди других процессов в системе. Целое число, возвращаемое функцией sem_get, может быть уникальным при каждом вызове, даже тогда, когда задано то же значение аргумента key. 
boolean sem_release(integer identifier)
Функция sem_release предназначена для отмены действия функции sem_acquire function.
boolean sem_remove(integer identifier)
Функция sem_remove предназначена для удаления семафора из памяти.