[PHP SDK for OpenStack/Rackspace API] オブジェクト ストレージ サービスの使用
Swift は、OpenStack のオブジェクト ストレージ サービスです。 php-opencloud ライブラリでは、接続オブジェクトによって作成された ObjectStore クラス (OpenStack または Rackspace) を通じてアクセスされます。
例:
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$cloud = new \OpenCloud\OpenStack(array( 'username'=>'{username}','password'=>'{password}')); $swift = $cloud->ObjectStore('cloudFiles','DFW');</code>新しく作成した $swift を使用すると、さまざまなオブジェクト ストレージ コンポーネントを使用できます。
最上位のオブジェクト ストレージ コンポーネント インスタンスはコンテナです。コンテナはオブジェクトのコレクションの名前であり、ファイル システムのディレクトリやフォルダに似ています (実際には同等ではありません)。
すべてのオブジェクトがコンテナに保存されます。
オブジェクト ストレージ インスタンス内のすべてのコンテナを一覧表示します
ContainerList オブジェクトは、Container オブジェクトのコレクションです。オブジェクト ストレージ インスタンス内のすべてのコンテナを一覧表示します:
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$containers = $swift->ContainerList(); while($container = $containers->Next()) printf("%s\n", $container->name);</code>他のオブジェクト コレクションと同様に、これも First()、Next()、および Size() メソッドをサポートします。
新しいコンテナを作成します
上記で新しく作成した $swift オブジェクトの Container() メソッドを使用して、新しい (空の) コンテナを作成します。
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$mycontainer = $swift->Container();</code>コンテナをオブジェクト ストレージ インスタンスに保存し、Create() メソッドを使用します。
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$mycontainer->Create('MyContainerName');</code>name が設定されている場合、Create() メソッドに name を含める必要はありません。メソッド内で直接名前を指定するのも便利です。
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$mycontainer->name = 'MyContainerName'; $mycontainer->Create();</code>既存のコンテナを取得します
ObjectStore オブジェクトの Container() メソッドにパラメータを渡すと、既存のコンテナを取得できます:
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$oldcontainer = $swift->Container('SomeOldContainer');</code>
この場合、SomeOldContainer に関する情報が取得されます。これにはコンテナのメタデータ情報が含まれます。
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">printf("Container %s has %d object(s) consuming %d bytes\n", $oldcontainer->name, $oldcontainer->count, $oldcontainer->bytes);</code>
コンテナの削除
Delete() メソッドはコンテナ
を削除します<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$oldcontainer->Delete();</code>コンテナを削除するときは、コンテナが空である必要があることに注意してください。つまり、コンテナに関連付けられたオブジェクトがあってはなりません。
コンテナの更新
コンテナーはバックグラウンドでまったく同じ方法で作成および更新されます。 Create() メソッドを使用してコンテナを更新できますが、(プログラム内で) セマンティクスが異なる場合があるため、Update() メソッドは Create() メソッドのエイリアスとしても使用されます。
翻訳元: https://github.com/rackspace/php-opencloud/blob/master/docs/userguide/objectstore.md
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace; font-size:12px; margin:0px; padding:0px; border:none; background-color:transparent">$oldcontainer->metadata->update_time = time(); $oldcontainer->Update();</code>