/**
  * Write a specific session
  * 
  * @param int $id Session Id
  * @param string $serializedData Serialized PHP object
  * @throws Exception
  */
 public function write($id, $serializedData)
 {
     // Encode data
     $serializedData = base64_encode(serialize($serializedData));
     if (strlen($serializedData) >= self::MAX_TS_PROPERTY_SIZE && $this->_storageType == self::STORAGE_TYPE_TABLE) {
         throw new Zend_Service_WindowsAzure_Exception('Session data exceeds the maximum allowed size of ' . self::MAX_TS_PROPERTY_SIZE . ' bytes that can be stored using table storage. Consider switching to a blob storage back-end or try reducing session data size.');
     }
     // Store data
     if ($this->_storageType == self::STORAGE_TYPE_TABLE) {
         // In table storage
         $sessionRecord = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($this->_sessionContainerPartition, $id);
         $sessionRecord->sessionExpires = time();
         $sessionRecord->serializedData = $serializedData;
         $sessionRecord->setAzurePropertyType('sessionExpires', 'Edm.Int32');
         try {
             $this->_storage->updateEntity($this->_sessionContainer, $sessionRecord);
         } catch (Zend_Service_WindowsAzure_Exception $unknownRecord) {
             $this->_storage->insertEntity($this->_sessionContainer, $sessionRecord);
         }
     } else {
         if ($this->_storageType == self::STORAGE_TYPE_BLOB) {
             // In blob storage
             $this->_storage->putBlobData($this->_sessionContainer, $this->_sessionContainerPartition . '/' . $id, $serializedData, array('sessionexpires' => time()));
         }
     }
 }
示例#2
0
 /**
  * Write a specific session
  *
  * @param int $id Session Id
  * @param string $serializedData Serialized PHP object
  */
 public function write($id, $serializedData)
 {
     $sessionRecord = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($this->_sessionTablePartition, $id);
     $sessionRecord->sessionExpires = time();
     $sessionRecord->serializedData = base64_encode($serializedData);
     $sessionRecord->setAzurePropertyType('sessionExpires', 'Edm.Int32');
     try {
         $this->_tableStorage->updateEntity($this->_sessionTable, $sessionRecord);
     } catch (Zend_Service_WindowsAzure_Exception $unknownRecord) {
         $this->_tableStorage->insertEntity($this->_sessionTable, $sessionRecord);
     }
 }
示例#3
0
 /**
  * Insert document
  *
  * @param  array|Zend_Cloud_DocumentService_Document $document
  * @param  array                         $options
  * @return boolean
  */
 public function insertDocument($collectionName, $document, $options = null)
 {
     if (is_array($document)) {
         $document = $this->_getDocumentFromArray($document, $collectionName);
     }
     if (!$document instanceof Zend_Cloud_DocumentService_Document) {
         throw new Zend_Cloud_DocumentService_Exception('Invalid document supplied');
     }
     $key = $this->_validateDocumentId($document->getId(), $collectionName);
     $document->setId($key);
     $this->_validateCompositeKey($key);
     $this->_validateFields($document);
     try {
         $entity = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($key[0], $key[1]);
         $entity->setAzureValues($document->getFields(), true);
         $this->_storageClient->insertEntity($collectionName, $entity);
     } catch (Zend_Service_WindowsAzure_Exception $e) {
         throw new Zend_Cloud_DocumentService_Exception('Error on document insertion: ' . $e->getMessage(), $e->getCode(), $e);
     }
 }