コード例 #1
0
ファイル: WindowsAzure.php プロジェクト: alefernie/intranet
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
             }
         }
     }
 }