Учебник по основам PHP



int shmop_open (int key, string flags, int mode, int size)


В аргументе key указывается системный идентификатор блока; во втором аргументе, flags, указывается вид операции:

  • "а" — открыть доступ к уже существующему блоку (IPC_EXCL);
  • "с" — создать новый блок (IPC_CREATE).

Если блок создастся, то в третьем и четвертом аргументах передаются соответственно: права доступа к нему (обычно в восьмеричном представлении) и размер в байтах. Если же блок открывается, то в третьем и четвертом аргументах следует передавать значение 0.

В случае успеха функция возвращает дескриптор блока, используе- | мый в последующих операциях с ним.

shmop_size

Получение размера блока разделяемой памяти

int shmop_size (int shmid)

Возвращает размер блока, указанного дескриптором shmid.

shmop_read

Чтение данных из блока разделяемой памяти

string shmop_read (int shmid, int start, nnt count)

Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.

shmop_write

Запись данных в блок разделяемой памяти

int shmop_write (int shmid, string data, int offset)

Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.

shmop_delete

Удаление блока разделяемой памяти

int shmop_delete (int shmid)

В аргументе shmid указывается дескриптор блока.

В случае успеха возвращает 1, а при ошибке — 0.

shmop_close

Закрытие блока разделяемой памяти

int shmop_close (int shmid)

В аргументе shrald указывается дескриптор блока.

Семафоры

Данная группа функций позволяет использовать семафоры и разделяемую память (System V). Семафоры могут использоваться для реализации доступа к системным ресурсам в эксклюзивном режиме (или ограничивать число процессов, одновременно использующих один ресурс). Сами по себе семафоры не защищают от одновременного использования ресурса, а используются для синхронизации.

Операционные системы Unix имеют следующие ограничения:

  • SHMMAX — максимальный размер блока разделяемой памяти, обычно 131 072 байта;
  • SHMMIN — минимальный размер блока разделяемой памяти, обычно 1 байт;
  • SHMMNI — максимальное число блоков разделяемой памяти в системе, обычно 100;
  • SHMSEG — максимальное число блоков разделяемой памяти для одного процесса, обычно 6.

Эти функции не работают в Windows.

sem_get

Получение дескриптора семафора

int sem_get (int key [, int max_acquire [, int perm]])

Возвращает дескриптор семафора с идентификатором key или FALSE — при ошибке.

При отсутствии такого семафора он создается, и в аргументах тах_ acquire и perm можно задать: число процессов, которые могут заблокировать этот семафор (по умолчанию 1 — «никакой процесс, кроме данного»), и нрава доступа к нему (по умолчанию 0666).

См. также: sem_acquire() и sem_release().

sem_acquire

Блокировка семафора

int sem_acquire (int senMdentifier)

Возвращает TRUE или FALSE — при ошибке. Число процессов, которые одновременно могут заблокировать семафор, указывается при его создании (аргументом max_acquire), и если оно уже достигнуто, попытки блокировки отвергаются. После завершения процесса, если он не освобождает семафор, выдается предупреждение.

См. также: sera_get() и sem_release().

sem_release

Освобождение семафора

int sem_release (int sem_identifier)

Освобождает семафор, заблокированный ранее данным процессом. Возвращает TRUE или FALSE — при ошибке (с выдачей предупреждения). После освобождения семафора его снова можно заблокировать функцией sem_acqihre().

См. также: sera get() и sero_acquire().

shm_attach

Создание или открытие блока разделяемой памяти

int shm_attach (int key [, int memsize [, int perm]])

В аргументе key указывается системный идентификатор блока. В случае успеха функция возвращает дескриптор блока разделяемой памяти System V, используемый в последующих операциях с ним. Если такого блока не существует, то он создается, и тогда в аргументе memsize можно указать его размер в байтах. (Если значение не указывается, то создается блок размером 10 000 байт, размер по умолча-' нию можно также задать, добавив в файл конфигурации параметр sysvshm.initjnem=.) В аргументе perm можно указать права доступа (по умолчанию 0666).

Повторный вызов функции с тем же значением key создаст новый дескриптор на тот же блок (аргументы memsize и perm будут игнорироваться).

shm_detach

Закрытие блока разделяемой памяти

int shm_detach (int shm_identifier)

Данные блока shmjdentifier при закрытии сохраняются.

shm_remove

Удаление блока разделяемой памяти

int shm_remove (int shmjiclentifier)

Все данные блока shm_identifier уничтожаются.

shm_put_var

Добавление или обновление переменной в разделяемой памяти

int shm_put_var (int shm_identifier, int variable_key, mixed variable)

Присваивает значение PHP-переменной variable переменной в блоке разделяемой памяти (с дескриптором shm_identifier), имеющей идентификатор variable_key. Поддерживаются все типы переменных (double, int, string, array).

shm_get_var

Получение переменной из разделяемой памяти

mixed shm_get_var (int id, int variable_key)

Возвращает значение переменной variable_key.

shm_remove_var

Удаление переменной из разделяемой памяти int shm_remove_var (int id, int variable_key) Удаляет переменную variable_key и освобождает память.









Начало    Назад    




Книжный магазин