/** * 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())); } } }
/** * 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); } }
/** * Replace document. * * The new document replaces the existing document. * * @param Zend_Cloud_DocumentService_Document $document * @param array $options * @return boolean */ public function replaceDocument($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); $this->_validateFields($document); try { $entity = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($key[0], $key[1]); $entity->setAzureValues($document->getFields(), true); if (isset($options[self::VERIFY_ETAG])) { $entity->setEtag($options[self::VERIFY_ETAG]); } $this->_storageClient->updateEntity($collectionName, $entity, isset($options[self::VERIFY_ETAG])); } catch (Zend_Service_WindowsAzure_Exception $e) { throw new Zend_Cloud_DocumentService_Exception('Error on document replace: ' . $e->getMessage(), $e->getCode(), $e); } }