array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.sem-get.php', 1 => 'sem_get', ), 'up' => array ( 0 => 'ref.sem.php', 1 => 'Функции семафоров', ), 'prev' => array ( 0 => 'function.sem-acquire.php', 1 => 'sem_acquire', ), 'next' => array ( 0 => 'function.sem-release.php', 1 => 'sem_release', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/sem/functions/sem-get.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
sem_get — Получение идентификатора семафора
$key
,$max_acquire
= 1,$permissions
= 0666,$auto_release
= true
sem_get() возвращает идентификатор, который может быть использован
для доступа к семафору System V, по заданному значению key
.
Последующие вызовы sem_get() для того же самого ключа будут возвращать другие идентификаторы, однако все они будут ссылаться на один и тот же семафор.
Если key
равен 0
, то для каждого вызова
sem_get() создаётся новый приватный семафор.
key
max_acquire
Число процессов, которые могут одновременно использовать семафор задаётся
через max_acquire
.
permissions
Права доступа к семафору. В действительности, устанавливается только если процесс является единственным использующим семафор.
auto_release
Определяет, должен ли семафор автоматически освобождаться при завершении работы.
При успешном завершении возвращается положительный идентификатор семафора, или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.0.0 | В случае успешного выполнения функция возвращает экземпляр SysvSemaphore; ранее возвращался ресурс (resource). |
8.0.0 |
Тип auto_release изменён с
целого числа (int) на логическое значение (bool).
|
Когда sem_get() используется для доступа к семафору, созданному
вне PHP, обратите внимание на то, что этот семафор должен быть создан как набор из
трёх семафоров (к примеру, путём указания 3 в качестве параметра
nsems
во время вызова C-функции semget()
),
в противном случае, PHP не сможет обратиться к семафору.