| Пункт 195. Модуль Apache mod_slotmem_shm mod_slotmem_shm — это поставщик памяти, обеспечивающий создание и доступ к сегменту общей памяти, в котором наборы данных организованы в «слоты».
Вся общая память очищается и очищается при каждом перезапуске, корректном или нет. Сами данные хранятся и восстанавливаются в файле, отмеченном name
параметром в вызовах create и attach
. Если не указан абсолютный путь, файл будет создан относительно пути, указанного в директиве
DefaultRuntimeDir .
mod_slotmem_shm предоставляет следующие функции API:
- apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- вызвать обратный вызов на всех рабочих слотах
- apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, тип ap_slotmem_type_t, apr_pool_t *pool)
- создайте новую слот-память с размером каждого элемента, равным item_size.
name используется для создания имени файла для постоянного хранилища разделяемой памяти, если оно настроено. Значения:
-
"none"
-
Anonymous shared memory and no persistent store
-
"file-name"
-
[DefaultRuntimeDir]/file-name
-
"/absolute-file-name"
-
Absolute file name
- apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
- прикрепить к существующему слоту. См
create . описание name параметра.
- apr_status_t dptr(ap_slotmem_instance_t *s, беззнаковый целочисленный item_id, void**mem)
- получить прямой указатель на память, связанную с этим рабочим слотом.
- apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- получить/прочитать память из этого слота в место назначения
- apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- положить/записать данные из src в этот слот
- беззнаковое целое число_слотов (ap_slotmem_instance_t *s)
- вернуть общее количество слотов в сегменте
- apr_size_t slot_size (ap_slotmem_instance_t *s)
- вернуть общий размер данных в байтах слота в сегменте
- apr_status_t захватить (ap_slotmem_instance_t *s, беззнаковое целое *item_id);
- захватить или выделить первый свободный слот и пометить как используемый (без копирования данных)
- apr_status_t fgrab (ap_slotmem_instance_t *s, беззнаковое целое item_id);
- принудительно захватывает или выделяет указанный слот и помечает его как используемый (без копирования данных)
- выпуск apr_status_t (ap_slotmem_instance_t *s, беззнаковый целочисленный item_id);
- освобождает или освобождает слот и помечает его как неиспользуемый (не копирует данные)
|
|