Bugfix: Work Item GH-193 - Fix to empty worksheet garbage collection when using cell caching

This commit is contained in:
Mark Baker 2013-12-29 23:48:42 +00:00
parent 30070f35c2
commit 2bcaa01ecc
11 changed files with 11 additions and 10 deletions

View File

@ -61,7 +61,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) { if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) {

View File

@ -65,7 +65,7 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
fseek($this->_fileHandle,0,SEEK_END); fseek($this->_fileHandle,0,SEEK_END);

View File

@ -43,7 +43,7 @@ class PHPExcel_CachedObjectStorage_Igbinary extends PHPExcel_CachedObjectStorage
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$this->_cellCache[$this->_currentObjectID] = igbinary_serialize($this->_currentObject); $this->_cellCache[$this->_currentObjectID] = igbinary_serialize($this->_currentObject);

View File

@ -65,7 +65,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$obj = serialize($this->_currentObject); $obj = serialize($this->_currentObject);

View File

@ -43,7 +43,7 @@ class PHPExcel_CachedObjectStorage_MemoryGZip extends PHPExcel_CachedObjectStora
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject)); $this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject));

View File

@ -43,7 +43,7 @@ class PHPExcel_CachedObjectStorage_MemorySerialized extends PHPExcel_CachedObjec
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$this->_cellCache[$this->_currentObjectID] = serialize($this->_currentObject); $this->_cellCache[$this->_currentObjectID] = serialize($this->_currentObject);

View File

@ -57,7 +57,7 @@ class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
fseek($this->_fileHandle,0,SEEK_END); fseek($this->_fileHandle,0,SEEK_END);

View File

@ -57,7 +57,7 @@ class PHPExcel_CachedObjectStorage_SQLite extends PHPExcel_CachedObjectStorage_C
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
if (!$this->_DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES('".$this->_currentObjectID."','".sqlite_escape_string(serialize($this->_currentObject))."')")) if (!$this->_DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->_TableName." VALUES('".$this->_currentObjectID."','".sqlite_escape_string(serialize($this->_currentObject))."')"))

View File

@ -85,7 +85,7 @@ class PHPExcel_CachedObjectStorage_SQLite3 extends PHPExcel_CachedObjectStorage_
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$this->_insertQuery->bindValue('id',$this->_currentObjectID,SQLITE3_TEXT); $this->_insertQuery->bindValue('id',$this->_currentObjectID,SQLITE3_TEXT);

View File

@ -58,7 +58,7 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage
* @throws PHPExcel_Exception * @throws PHPExcel_Exception
*/ */
protected function _storeData() { protected function _storeData() {
if ($this->_currentCellIsDirty) { if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
$this->_currentObject->detach(); $this->_currentObject->detach();
$obj = serialize($this->_currentObject); $obj = serialize($this->_currentObject);

View File

@ -41,6 +41,7 @@ Fixed in develop branch for release v1.8.0:
- Bugfix: (PowerKiKi) Work Item GH-270/GH-31 - Binary comparison of strings are case insensitive - Bugfix: (PowerKiKi) Work Item GH-270/GH-31 - Binary comparison of strings are case insensitive
- Bugfix: (MBaker) Work Item GH-275 - Insert New Row/Column Before is not correctly updating formula references - Bugfix: (MBaker) Work Item GH-275 - Insert New Row/Column Before is not correctly updating formula references
- Bugfix: (MBaker) Work Item GH-257 - Passing an array of cells to _generateRow() in the HTML/PDF Writer causes caching problems with last cell in the range - Bugfix: (MBaker) Work Item GH-257 - Passing an array of cells to _generateRow() in the HTML/PDF Writer causes caching problems with last cell in the range
- Bugfix: (MBaker) Work Item GH-193 - Fix to empty worksheet garbage collection when using cell caching
- Feature: (amerov) - Implementation of the Excel HLOOKUP() function - Feature: (amerov) - Implementation of the Excel HLOOKUP() function
- Feature: (MBaker) - Added "Quote Prefix" to style settings (Excel2007 Reader and Writer only) - Feature: (MBaker) - Added "Quote Prefix" to style settings (Excel2007 Reader and Writer only)
- Feature: (MBaker) - Added Horizontal FILL alignment for Excel5 and Excel2007 Readers/Writers, and Horizontal DISTRIBUTED alignment for Excel2007 Reader/Writer - Feature: (MBaker) - Added Horizontal FILL alignment for Excel5 and Excel2007 Readers/Writers, and Horizontal DISTRIBUTED alignment for Excel2007 Reader/Writer