shmop_open
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
shmop_open — Резервування або використання блоку пам'яті, що розділяється.
Опис
shmop_open( int $key, string $mode, int $permissions, int $size): Shmop|false
shmop_open() резервує або використовує існуючий блок пам'яті, що розділяється.
Список параметрів
key
Системний ідентифікатор блоку пам'яті, що розділяється. Може бути заданий у десятковому або шістнадцятковому кодуванні.
mode
Доступні для використання прапори:
- "a" для доступу (встановлює прапор SHM_RDONLY) Слід застосовувати цей прапор, коли необхідно використовувати раніше зарезервовану ділянку пам'яті, що розділяється, вже містить будь-які дані. У цьому випадку доступ можливий лише для читання.
- "c" для резервування (встановлює прапор IPC_CREATE) Слід використовувати цей прапор для створення нової зарезервованої ділянки пам'яті, що розділяється. Якщо ділянку пам'яті з таким ідентифікатором вже існує, спроба доступу до неї виконується для подальших операцій читання та запису.
- "w" для виконання операцій читання та запису Слід використовувати цей прапор для читання та запису даних, що зберігаються в пам'яті, що розділяється. Цей прапор використовується в більшості випадків.
- "n" для створення у пам'яті нового сегмента (встановлює прапор IPC_CREATE|IPC_EXCL) Слід використовувати цей прапор для створення нового сегмента в пам'яті, що розділяється, але якщо сегмент вже існує з тим же прапором, відбувається відмова. Це корисно з метою безпеки, т.к. дозволяє уникнути помилок синхронізації (Race condition exploits).
permissions
Права доступу до ділянки пам'яті такі ж, як і до звичайного файлу. Їх можна вказувати у вісімковому вигляді, наприклад 0644
size
Розмір резервованого блоку в пам'яті, що розділяється в байтах
Зауваження :
Зверніть увагу: треті та четверті параметри повинні бути вказані як 0, якщо необхідно отримати доступ до існуючої ділянки пам'яті.
Значення, що повертаються
У разі успішного виконання shmop_open() повертає екземпляр Shmop, який може бути використаний для доступу до зарезервованої ділянці пам'яті. У разі виникнення помилки повертає false
Помилки
Якщо параметр mode
вказано некоректно або параметр size
менше або дорівнює нулю, видається помилка ValueError. У разі виникнення інших помилок видається помилка рівня E_WARNING
список змін
Версия | Опис |
---|---|
8.0.0 | У разі успішного виконання повертається екземпляр Shmop; раніше повертався ресурс (resource). |
8.0.0 | Якщо параметр mode вказано некоректно або параметр size менше або дорівнює нулю, видається помилка ValueError. previously E_WARNING was emitted instead, раніше натомість видавалася помилка рівня E_WARNING та функція повертала false |
Приклади
Приклад #1 Резервування ділянки пам'яті, що розділяється
Loading...
У наведеному прикладі виконується доступ до блоку з ідентифікатором, що повертається функцією ftok()
Дивіться також
- shmop_close() - Закриття блоку пам'яті, що розділяється
- shmop_delete() - Видалення блоку пам'яті, що розділяється