Руководство по РНР 3.0 - Функции семафоров и разделяемой памяти
Этот модуль предоставляет функции семафоров, используя семафоры System V.
Семафоры могут использоваться для обеспечения эксклюзивного доступа к русурсам
используемой машины или для ограничения числа процессов, которые могут одновременно
использовать ресурс.
Поддержка разделяемой памяти также включена. Она совместима с System V - совместимыми системами.
sem_get
sem_get -- получение идентификатора семафора
Описание
int sem_get
(int key, int [
max_acquire
]
, int [
perm
]
);
Возвращает положительный индентификатор семафора при успехе или false при ошибке.
sem_get()
возвращает идентификатор, который может быть использован для доступа к семафору
System V с указанным ключом. Семафор создается, если необходимо, используя биты доступа,
указанные в perm (по умолчанию 0666). Число процессов, которое может быть зафиксировано
семафором одновременно устанавливается в max_acquire (по-умолчанию 1). В действительности
это значение устанавливается только если процесс обнаруживает, что он является единственным,
присоединенным к семафору.
Повторный вызов функции
sem_get()
с тем же ключем вернет другой идентификатор семафора, но оба
идентификатора указывают на один и тот же семафор.
См. также:
sem_acquire()
and
sem_release()
.
sem_acquire
sem_acquire -- фиксирует семафор
Описание
int sem_acquire
(int sem_identifier);
Возвращает true при успехе, false при ошибке.
sem_acquire()
блокируется (если необходимо) до тех пор, пока семафор сможет быть зафиксирован.
Процесс, пытающийся зафиксировать семафор, который уже зафиксирован, буде блокирован
навсегда, если фиксация семафора вызовет превышение его max_acquire значения..
После обработки запроса, любые семафоры, зафиксированные процессом, но не
освобожденные вручную, будут освобождены автоматически с выдачей предупреждения.
См. также:
sem_get()
and
sem_release()
.
sem_release
sem_release -- освобождает семафор
Описание
int sem_release
(int sem_identifier);
Возвращает true при успехе и false при ошибке.
sem_release()
освобождает семафор если он зафиксирован в данное время вызывающим процессом,
иначе выдается предупреждение.
После освобождения семафора функция
sem_acquire()
может быть вызвана для ре-фиксации его.
См. также:
sem_get()
and
sem_acquire()
.
shm_attach
shm_attach -- Создает или открывает разделяемую память
Описание
int shm_attach
(long key, long memsize, long perm);
Создает или открывает разделяемую память с указанным ключем и размером памяти.
shm_detach
shm_detach -- Отсоединяет от разделяемой памяти
Описание
int shm_detach
(long id);
Отсоединяет от разделяемой памяти с указанным
id
, созданным с помощью функции
shm_attach()
. Помните, что разделяемая память все еще существует в Unix-системе и данные все еще присутствуют.
shm_put_var
shm_put_var -- Вставляет или обновляет переменную в разделяемой памяти
Описание
int shm_put_var
(int id, long variable_key, mixed variable);
Вставляет или обновляет переменную с указанным variable_key. Все типы переменных
(double, long, string, array) поддерживаются. Функция
serialize()
может быть использована для хранения данных.
shm_put_var
shm_put_var -- Считывает переменную с указанным variable_key
Описание
mixed shm_get_var
(int id, long variable_key);
Считывает переменную с указанным
variable_key
. Переменная все еще присутствует в разделяемой памяти. Функция
unserialize()
может быть использована для декодирования данных.
shm_remove_var
shm_remove_var -- Удаляет переменную из разделяемой памяти
Описание
int shm_remove_var
(int id, long variable_key);
Удаляет переменную с указанным
variable_key
из разделяемой памяти.
shm_remove
shm_remove -- Удаляет разделяемую память
Описание
int shm_remove
(long key);
Удаляет разделяемую память из Unix-системы. Все данные будут уничтожены.
Содержание