6

Rackspace Cloud Files 用の PHP API を使い始めたところです。ここまでは順調ですが、シリアル化されたデータのキーと値のペアを格納する、貧乏人の memcache のようなものとして使用しています。

私のアプリは、次のようなものを使用して、既存のキャッシュされたオブジェクトをキー (API 言語では「名前」) で取得しようとします。

$obj = $this->container->get_object($key);

問題は、オブジェクトが存在しない場合、API が単に を返すのではなく、致命的なエラーをスローすることfalseです。API でこれを行う「正しい」方法は、おそらく

$objs = $this->container->list_objects();

次に$key、そのリストで自分の値を確認します。ただし、これはリクエストfalseから戻るだけでなく、時間/CPUを集中的に使用するようです。get_object

Cloud Files で「オブジェクトの検索」または「オブジェクトが存在するかどうかの確認」を行う方法はありますか?

ありがとう

4

5 に答える 5

4

私は彼らにプルリクエストを送り、それが含まれることを願っています.

https://github.com/rackspace/php-cloudfiles/pull/35

私のプルリクエストには例が含まれています。これは次のようになります。

$object = new CF_Object($this->container, 'key');
if ($object->exists() === false) {
    echo "The object '{$object->name}' does not exist.";
}
于 2011-08-22T02:24:14.083 に答える
1

オブジェクトが存在するかどうかを確認するより一般的な方法があります。

    try {
        $this->_container->get_object($path);
        $booExists = true;
    } catch (Exception $e) {
        $booExists = false;
    }
于 2012-12-17T17:17:15.557 に答える
0

$object をダンプすると、content_length がゼロであることがわかります。または、最終変更は長さゼロの文字列になります。

例:

$object = new CF_Object($container, 'thisdocaintthere.pdf');
print_r($object->content_length);

また、ダンプされた親オブジェクトの奥深くに 404 が返されますが、これはプライベートであるため、ハッキングする必要があります。

これを表示するには、次の手順を実行します。

$object = new CF_Object($container, 'thisdocaintthere.pdf');
print_r($object->container->cfs_http);

そのオブジェクト内に、404 である response_status が表示されます。

[response_status:CF_Http:private] => 404
于 2012-12-04T17:59:53.353 に答える