From 07e56b5a604488df1c10b884fb5f506e672f15be Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Sat, 3 Dec 2011 00:24:44 +0000 Subject: [PATCH] Feature - initial version of SQLite cell caching git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@83557 2327b42d-5241-43d6-9e2a-de5ac946f064 --- .../CachedObjectStorage/CacheBase.php | 3 +- .../PHPExcel/CachedObjectStorage/SQLite.php | 211 +++++++++++++++++ .../PHPExcel/CachedObjectStorage/SQLite3.php | 219 ++++++++++++++++++ .../PHPExcel/CachedObjectStorageFactory.php | 20 +- .../PHPExcel developer documentation.doc | Bin 771584 -> 758784 bytes changelog.txt | 1 + 6 files changed, 451 insertions(+), 3 deletions(-) create mode 100644 Classes/PHPExcel/CachedObjectStorage/SQLite.php create mode 100644 Classes/PHPExcel/CachedObjectStorage/SQLite3.php diff --git a/Classes/PHPExcel/CachedObjectStorage/CacheBase.php b/Classes/PHPExcel/CachedObjectStorage/CacheBase.php index 6119a348..4dd06fdd 100644 --- a/Classes/PHPExcel/CachedObjectStorage/CacheBase.php +++ b/Classes/PHPExcel/CachedObjectStorage/CacheBase.php @@ -85,7 +85,6 @@ class PHPExcel_CachedObjectStorage_CacheBase { * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? * * @param string $pCoord Coordinate address of the cell to check - * @return void * @return boolean */ public function isDataSet($pCoord) { @@ -146,7 +145,7 @@ class PHPExcel_CachedObjectStorage_CacheBase { */ public function getSortedCellList() { $sortKeys = array(); - foreach (array_keys($this->_cellCache) as $coord) { + foreach ($this->getCellList() as $coord) { list($column,$row) = sscanf($coord,'%[A-Z]%d'); $sortKeys[sprintf('%09d%3s',$row,$column)] = $coord; } diff --git a/Classes/PHPExcel/CachedObjectStorage/SQLite.php b/Classes/PHPExcel/CachedObjectStorage/SQLite.php new file mode 100644 index 00000000..6a74f580 --- /dev/null +++ b/Classes/PHPExcel/CachedObjectStorage/SQLite.php @@ -0,0 +1,211 @@ +_currentCellIsDirty) { + $this->_currentObject->detach(); + + $this->_DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES('".$this->_currentObjectID."','".sqlite_escape_string(serialize($this->_currentObject))."')"); + $this->_currentCellIsDirty = false; + } + $this->_currentObjectID = $this->_currentObject = null; + } // function _storeData() + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return void + * @throws Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) { + if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { + $this->_storeData(); + } + + $this->_currentObjectID = $pCoord; + $this->_currentObject = $cell; + $this->_currentCellIsDirty = true; + + return $cell; + } // function addCacheData() + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) { + if ($pCoord === $this->_currentObjectID) { + return $this->_currentObject; + } + $this->_storeData(); + + $query = "SELECT value FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $cellResultSet = $this->_DBHandle->query($query,SQLITE_ASSOC); + if ($cellResultSet->numRows() == 0) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->_currentObjectID = $pCoord; + + $cellResult = $cellResultSet->fetchSingle(); + $this->_currentObject = unserialize($cellResult); + // Re-attach the parent worksheet + $this->_currentObject->attach($this->_parent); + + // Return requested entry + return $this->_currentObject; + } // function getCacheData() + + + /** + * Is a value set for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) { + if ($pCoord === $this->_currentObjectID) { + return true; + } + + // Check if the requested entry exists in the cache + $query = "SELECT id FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $cellResultSet = $this->_DBHandle->query($query,SQLITE_ASSOC); + if ($cellResultSet->numRows() == 0) { + // Return null if requested entry doesn't exist in cache + return false; + } + return true; + } // function isDataSet() + + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws Exception + */ + public function deleteCacheData($pCoord) { + if ($pCoord === $this->_currentObjectID) { + $this->_currentObject->detach(); + $this->_currentObjectID = $this->_currentObject = null; + } + + // Check if the requested entry exists in the cache + $query = "DELETE FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $this->_DBHandle->queryExec($query); + + $this->_currentCellIsDirty = false; + } // function deleteCacheData() + + + /** + * Get a list of all cell addresses currently held in cache + * + * @return array of string + */ + public function getCellList() { + $query = "SELECT id FROM kvp_".$this->_TableName; + $cellIdsResult = $this->_DBHandle->unbufferedQuery($query,SQLITE_ASSOC); + + $cellKeys = array(); + foreach($cellIdsResult as $row) { + $cellKeys[] = $row['id']; + } + + return $cellKeys; + } // function getCellList() + + + /** + * Clone the cell collection + * + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) { + // Get a new id for the new table name + $tableName = str_replace('.','_',$this->_getUniqueID()); + $this->_DBHandle->queryExec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) + AS SELECT * FROM kvp_'.$this->_TableName); + + // Copy the existing cell cache file + $this->_TableName = $tableName; + } // function copyCellCollection() + + + public function unsetWorksheetCells() { + if(!is_null($this->_currentObject)) { + $this->_currentObject->detach(); + $this->_currentObject = $this->_currentObjectID = null; + } + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->_parent = null; + + // Close down the temporary cache file + $this->__destruct(); + } // function unsetWorksheetCells() + + + public function __construct(PHPExcel_Worksheet $parent) { + parent::__construct($parent); + if (is_null($this->_DBHandle)) { + $this->_TableName = str_replace('.','_',$this->_getUniqueID()); + $_DBName = ':memory:'; + + $this->_DBHandle = new SQLiteDatabase($_DBName); + $this->_DBHandle->queryExec('CREATE TABLE kvp_'.$this->_TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)'); + } + } // function __construct() + + + public function __destruct() { + $this->_DBHandle = null; + } // function __destruct() + +} diff --git a/Classes/PHPExcel/CachedObjectStorage/SQLite3.php b/Classes/PHPExcel/CachedObjectStorage/SQLite3.php new file mode 100644 index 00000000..0a495209 --- /dev/null +++ b/Classes/PHPExcel/CachedObjectStorage/SQLite3.php @@ -0,0 +1,219 @@ +_currentCellIsDirty) { + $this->_currentObject->detach(); + + $query = $this->_DBHandle->prepare("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES(:id,:data)"); + $query->bindValue('id',$this->_currentObjectID,SQLITE3_TEXT); + $query->bindValue('data',serialize($this->_currentObject),SQLITE3_BLOB); + $query->execute(); + $this->_currentCellIsDirty = false; + } + $this->_currentObjectID = $this->_currentObject = null; + } // function _storeData() + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return void + * @throws Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) { + if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { + $this->_storeData(); + } + + $this->_currentObjectID = $pCoord; + $this->_currentObject = $cell; + $this->_currentCellIsDirty = true; + + return $cell; + } // function addCacheData() + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) { + if ($pCoord === $this->_currentObjectID) { + return $this->_currentObject; + } + $this->_storeData(); + + $query = "SELECT value FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $cellResult = $this->_DBHandle->querySingle($query); + if (is_null($cellResult)) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->_currentObjectID = $pCoord; + + $this->_currentObject = unserialize($cellResult); + // Re-attach the parent worksheet + $this->_currentObject->attach($this->_parent); + + // Return requested entry + return $this->_currentObject; + } // function getCacheData() + + + /** + * Is a value set for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) { + if ($pCoord === $this->_currentObjectID) { + return true; + } + + // Check if the requested entry exists in the cache + $query = "SELECT id FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $cellResult = $this->_DBHandle->querySingle($query); + if (is_null($cellResult)) { + // Return null if requested entry doesn't exist in cache + return false; + } + return true; + } // function isDataSet() + + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws Exception + */ + public function deleteCacheData($pCoord) { + if ($pCoord === $this->_currentObjectID) { + $this->_currentObject->detach(); + $this->_currentObjectID = $this->_currentObject = null; + } + + // Check if the requested entry exists in the cache + $query = "DELETE FROM kvp_".$this->_TableName." WHERE id='".$pCoord."'"; + $this->_DBHandle->exec($query); + + $this->_currentCellIsDirty = false; + } // function deleteCacheData() + + + /** + * Get a list of all cell addresses currently held in cache + * + * @return array of string + */ + public function getCellList() { + $query = "SELECT id FROM kvp_".$this->_TableName; + $cellIdsResult = $this->_DBHandle->query($query); + + $cellKeys = array(); + while ($row = $cellIdsResult->fetchArray(SQLITE3_ASSOC)) { + $cellKeys[] = $row['id']; + } + + return $cellKeys; + } // function getCellList() + + + /** + * Clone the cell collection + * + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) { + // Get a new id for the new table name + $tableName = str_replace('.','_',$this->_getUniqueID()); + $this->_DBHandle->exec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) + AS SELECT * FROM kvp_'.$this->_TableName); + + // Copy the existing cell cache file + $this->_TableName = $tableName; + } // function copyCellCollection() + + + public function unsetWorksheetCells() { + if(!is_null($this->_currentObject)) { + $this->_currentObject->detach(); + $this->_currentObject = $this->_currentObjectID = null; + } + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->_parent = null; + + // Close down the temporary cache file + $this->__destruct(); + } // function unsetWorksheetCells() + + + public function __construct(PHPExcel_Worksheet $parent) { + parent::__construct($parent); + if (is_null($this->_DBHandle)) { + $this->_TableName = str_replace('.','_',$this->_getUniqueID()); + $_DBName = ':memory:'; +// $_DBName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.sqlite3'; + + $this->_DBHandle = new SQLite3($_DBName); + $this->_DBHandle->exec('CREATE TABLE kvp_'.$this->_TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)'); + } + } // function __construct() + + + public function __destruct() { + if (!is_null($this->_DBHandle)) { +// $this->_DBHandle->exec('DROP TABLE kvp_'.$this->_TableName); + + $this->_DBHandle->close(); + } + $this->_DBHandle = null; + } // function __destruct() + +} diff --git a/Classes/PHPExcel/CachedObjectStorageFactory.php b/Classes/PHPExcel/CachedObjectStorageFactory.php index cd402b23..d6e39b02 100644 --- a/Classes/PHPExcel/CachedObjectStorageFactory.php +++ b/Classes/PHPExcel/CachedObjectStorageFactory.php @@ -9,6 +9,8 @@ class PHPExcel_CachedObjectStorageFactory { const cache_to_memcache = 'Memcache'; const cache_to_phpTemp = 'PHPTemp'; const cache_to_wincache = 'Wincache'; + const cache_to_sqlite = 'SQLite'; + const cache_to_sqlite3 = 'SQLite3'; private static $_cacheStorageMethod = null; @@ -25,6 +27,8 @@ class PHPExcel_CachedObjectStorageFactory { self::cache_to_apc, self::cache_to_memcache, self::cache_to_wincache, + self::cache_to_sqlite, + self::cache_to_sqlite3, ); @@ -46,7 +50,11 @@ class PHPExcel_CachedObjectStorageFactory { 'cacheTime' => 600 ), self::cache_to_wincache => array( 'cacheTime' => 600 - ) + ), + self::cache_to_sqlite => array( + ), + self::cache_to_sqlite3 => array( + ), ); @@ -98,6 +106,16 @@ class PHPExcel_CachedObjectStorageFactory { return false; } break; + case self::cache_to_sqlite : + if (!function_exists('sqlite_open')) { + return false; + } + break; + case self::cache_to_sqlite3 : + if (!class_exists('SQLite3')) { + return false; + } + break; } self::$_storageMethodParameters[$method] = self::$_storageMethodDefaultParameters[$method]; diff --git a/Documentation/PHPExcel developer documentation.doc b/Documentation/PHPExcel developer documentation.doc index 02b7839d76633bb6e7183bf4a90a2ae01a8f703c..cfa95e5396fa6a6218313965f2c45adc0cc869dd 100644 GIT binary patch delta 68548 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 EKSYKKLjV8( delta 82867 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 K+nou#)%