/** * List items in the given directory in the storage service * * The $path must be a directory * * * @param string $path Must be a directory * @param array $options * @return array A list of item names */ public function listItems($path, $options = null) { // Options $returnType = self::RETURN_NAMES; // 1: return list of paths, 2: return raw output from underlying provider // Parse options if (is_array($options) && isset($options[self::RETURN_TYPE])) { $returnType = $options[self::RETURN_TYPE]; } try { // Fetch list $blobList = $this->_storageClient->listBlobs($this->_container, $path); } catch (Zend_Service_WindowsAzure_Exception $e) { throw new Zend_Cloud_StorageService_Exception('Error on list: ' . $e->getMessage(), $e->getCode(), $e); } // Return if ($returnType == self::RETURN_LIST) { return $blobList; } $returnValue = array(); foreach ($blobList as $blob) { $returnValue[] = $blob->Name; } return $returnValue; }
/** * Garbage collector * * @param int $lifeTime Session maximal lifetime * @see session.gc_divisor 100 * @see session.gc_maxlifetime 1440 * @see session.gc_probability 1 * @usage Execution rate 1/100 (session.gc_probability/session.gc_divisor) * @return boolean */ public function gc($lifeTime) { if ($this->_storageType == self::STORAGE_TYPE_TABLE) { // In table storage try { $result = $this->_storage->retrieveEntities($this->_sessionContainer, 'PartitionKey eq \'' . $this->_sessionContainerPartition . '\' and sessionExpires lt ' . (time() - $lifeTime)); foreach ($result as $sessionRecord) { $this->_storage->deleteEntity($this->_sessionContainer, $sessionRecord); } return true; } catch (Zend_Service_WindowsAzure_exception $ex) { return false; } } else { if ($this->_storageType == self::STORAGE_TYPE_BLOB) { // In blob storage try { $result = $this->_storage->listBlobs($this->_sessionContainer, $this->_sessionContainerPartition, '', null, null, 'metadata'); foreach ($result as $sessionRecord) { if ($sessionRecord->Metadata['sessionexpires'] < time() - $lifeTime) { $this->_storage->deleteBlob($this->_sessionContainer, $sessionRecord->Name); } } return true; } catch (Zend_Service_WindowsAzure_exception $ex) { return false; } } } }