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() - Видалення блоку пам'яті, що розділяється