Длина метаданных и размер папки хранилища объектов Softlayer

Я пытаюсь интегрировать Softlayer Object Storage с нашим приложением PHP. Я использую API с https://github.com/softlayer/softlayer-object-storage-php.

У меня есть следующие запросы:-

  1. Какова максимальная длина значения для пользовательских метаданных объекта. Мне нужно было хранить дополнительную информацию об объекте в метаданных.
  2. Как получить размер папки, а не размер контейнера? Я вижу заголовок "X-container-bytes-used", который соответствует размеру контейнера. Но нужно получить размер папки.

Пожалуйста посоветуй. Спасибо

1 ответ

По первому вопросу: посмотрите следующую ссылку:

Ограничения

По второму вопросу: проводя небольшое исследование в Object Storage API v1 (ПОДДЕРЖИВАЕТСЯ), я не нашел способа узнать размер папки. Портал также не отображает размер папки.

Обходным путем будет получение всех размеров файла внутри папки с использованием PHP-клиента SoftLayer Object Storage] ( https://github.com/softlayer/softlayer-object-storage-php)

обновленный

PHP Script для получения размера папки

/**
 * This method retrieves folder size
 * @var $containerName - The container's name where the folder is located
 * @var $folder - The folder that you wish to retrieve its size
 */
function getFolderSize($objectStorage, $containerName, $folder) {
    // Get objects
    $objects = $objectStorage -> with($containerName . "/") -> get() -> objects;
    $size = 0;
    foreach ($objects as $object) {
        $objectName = explode($containerName . "/", $object -> getPath());
        $folderName = explode($folder . "/", $objectName[1]);
        if (sizeof($folderName) > 1) {
            $sizeObject = $objectStorage -> with($containerName . "/" . $folder . "/" . $folderName[1]) -> get() -> getHeader('Content-length');
            $size = $size + $sizeObject;
            //print_r("\n File" . $folderName[1] . "   " . $sizeObject . " Bytes (" . ($sizeObject / 1024) . " KB)       Total Size Folder: " . $size . " Bytes (" . ($size / 1024) . " KB)");
        }
    }
    return $size;
}

/**
 * Declare Object Storage parameters
 */
$host = 'https://mil01.objectstorage.softlayer.net/auth/v1.0/';
// the SoftLayer Object Storage API host
$username = 'set me';
$password = 'set me';
$options = array('adapter' => ObjectStorage_Http_Client::SOCKET, 'timeout' => 10);

/**
 * Creating Object Storage Object
 */
$objectStorage = new ObjectStorage($host, $username, $password, $options);

/**
 * Retrieve a folder's size
 */
$size = getFolderSize($objectStorage, "rcvTest", "folderTest/folder1/subfolder1/subsubfolder1");
print_r("\n Folde Size: " . $size . " bytes   " . $size / 1024 . " KB");

Ссылки: SoftLayer Object Storage PHP Client

Другие вопросы по тегам