Хранилище пар «ключ-значение»
Хранилище пар «ключ-значение» Plesk используется для хранения настроек пользователя или секретных ключей. Для доступа к хранилищу пар «ключ-значение» Plesk используйте класс pm_Settings. Ключи и значения хранятся в контексте расширения.
Если вам надо присвоить значение, используйте метод
pm_Settings::set('authToken', $authToken);
Особый случай:
pm_Settings::set('something', null);
Примечание: До Plesk 17.0 такая инструкция привела бы к выдаче исключения. Начиная с Plesk 17.0, эта инструкция приведет к удалению соответствующего элемента из хранилища пар «ключ-значение».
Теперь вы можете получить значение этой переменной, используя метод
$authToken = pm_Settings::get('authToken');
Можно использовать необязательный параметр, чтобы указать значение, которое будет возвращено по умолчанию в случае, если соответствующий ключ не найден:
$message = pm_Settings::get('message', 'default message');
Чтобы получить доступ к этим значениям в каком-либо месте кода, сначала инициализируйте контекст:
pm_Context::init('extension-id');
Необходимо инициализировать контекст в следующих местах кода:
- Планировщик задач.
- Пред-/послеустановочные скрипты
- Обработчики событий
Шифрование данных
Хранилище пар «ключ-значение» позволяет хранить и получать данные в зашифрованном виде.
Примечание: Настоятельно рекомендуем вам использовать именно этот подход при работе с конфиденциальными данными, такими, как учетные данные пользователя и так далее.
- Метод setEncrypted() сохраняет зашифрованные данные в хранилище пар «ключ-значение».
pm_Settings::setEncrypted('secretValue', $secretValue);
- Метод getDecrypted() получает зашифрованное значение из хранилища пар «ключ-значение».
$secretValue = pm_Settings::getDecrypted('secretValue');
Очистка хранилища пар «ключ-значение»
Начиная с Plesk 12.5, стало возможным очистить настройки расширения с помощью метода clean(). Вы можете использовать его для добавления кнопки Вернуться к значениям по умолчанию в интерфейсе вашего расширения.
Комментарии
Ограничение длины значения – 2000 символов.
Ограничение длины строки сохраненного значения – 2000 символов.
Меры предосторожности:
-
Избегайте хранения значений, длина которых больше 2000 символов.
Примечание: В версиях Plesk ниже 17.0 сохраняются только первые 2000 символов, остальные символы обрезаются. Начиная с Plesk 17.0, такое значение вообще не будет сохранено, и будет выдано исключение.
-
Избегайте хранения значений, которые имеют тенденцию расти по длине, как, например, список доменов в виде строки JSON.
Советы по тестированию:
- Проверяйте длину значений, сохраняемых расширением.
- Для сохраненных значений длиной около 2000 символов, удостоверьтесь в том, что расширение должным образом проверяет, что значение имеет допустимую длину.
- Тестируйте расширение на нескольких доменах или в схожих условиях (умножая количество сущностей), в зависимости от функциональности расширения.
Значения сохраняются в виде обычного текста
Данные, сохраненные в хранилище пар «ключ-значение», хранятся в виде обычного текста, без шифрования.
Избегайте хранения конфиденциальной информации.
Хранилище пар «ключ-значение» сохраняется и восстанавливается как часть резервной копии сервера
Хранилище пар «ключ-значение» Plesk сохраняется как часть резервной копии сервера. Таким образом, восстановление сервера Plesk из резервной копии может привести к откату некоторых или всех изменений данных хранилища, выполненных расширением.
Советы по тестированию:
Проверьте, что расширение ведет себя правильно после восстановления сервера. Например, создайте резервную копию, удалите некоторые элементы, связанные с расширением, из хранилища пар «ключ-значение», восстановите сервер из резервной копии и удостоверьтесь в том, что расширение работает так, как ожидается.
Используйте GUID объектов Plesk
Чтобы гарантировать отсутствие конфликтов между объектами, используйте GUID объектов Plesk (или ID, если GUID недоступны), чтобы однозначно идентифицировать домены, пользователей и т.д. Это поможет безопасно разрешить ситуацию, когда какой-либо объект удаляется из системы одним пользователем, а затем создается под тем же именем другим пользователем.
Советы по тестированию:
Проверьте, что GUID используются как идентификаторы объектов.
Очистка хранилища пар «ключ-значение» при удалении расширения
Хранилище пар «ключ-значение» автоматически очищается при удалении расширения. Вам необязательно делать это самостоятельно в скрипте pre-uninstall.php
.