使用Rackspace CloudFiles API(PHP)時,有時我只需要獲取容器中所有當前文件的列表。我剛纔想到的速度非常慢,效率很低,因爲它獲取與該文件相關的每個對象。所以,我有什麼:rackspace cloudfiles api - 返回容器文件的最有效方法
我的功能
function clean_cdn() {
$objects = $this->CI->cfiles->get_objects();
foreach ($objects as $object) {
echo $object->name;
}
}
get_objects包裝的笨
public function get_objects() {
$my_container = $this->container_info();
try {
return $my_container->get_objects(0, NULL, NULL, NULL);
} catch(Exception $e) {
$this->_handle_error($e);
return FALSE;
}
}
cloudfiles get_objects功能
function get_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL)
{
list($status, $reason, $obj_array) =
$this->cfs_http->get_objects($this->name, $limit,
$marker, $prefix, $path);
if ($status < 200 || $status > 299) {
throw new InvalidResponseException(
"Invalid response (".$status."): ".$this->cfs_http->get_error());
}
$objects = array();
foreach ($obj_array as $obj) {
$tmp = new CF_Object($this, $obj["name"], False, True);
$tmp->content_type = $obj["content_type"];
$tmp->content_length = (float) $obj["bytes"];
$tmp->set_etag($obj["hash"]);
$tmp->last_modified = $obj["last_modified"];
$objects[] = $tmp;
}
return $objects;
}
這會給我一個名字(這就是我目前所做的一切),但有沒有更好的方法?
更新
我發現我可以在技術上只是把所有的「目錄」中的數組,並在它們之間迭代在foreach循環中,列出他們每個人作爲get_objects
的第四個參數。所以get_objects(0, NULL, NULL, 'css')
等,但似乎仍然有更好的方法。
甜,謝謝。我會檢查這一點。猜猜該升級了。 –