From 77cd4ac9aa261f0e02062f5735ad51eec8fb6e97 Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Wed, 26 Oct 2011 16:16:43 +0000 Subject: [PATCH] Bugfix: Work item 16643 - Bug In Cache System (cell reference when throwing caching errors) General: Work item 16643 - Add file directory as a cache option for cache_to_discISAM git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@82024 2327b42d-5241-43d6-9e2a-de5ac946f064 --- Classes/PHPExcel/CachedObjectStorage/APC.php | 6 +++--- .../PHPExcel/CachedObjectStorage/DiscISAM.php | 12 +++++++++--- .../PHPExcel/CachedObjectStorage/Memcache.php | 6 +++--- .../PHPExcel/CachedObjectStorage/Wincache.php | 8 ++++---- .../PHPExcel/CachedObjectStorageFactory.php | 2 +- .../PHPExcel developer documentation.doc | Bin 772096 -> 771584 bytes changelog.txt | 6 ++++-- 7 files changed, 24 insertions(+), 16 deletions(-) diff --git a/Classes/PHPExcel/CachedObjectStorage/APC.php b/Classes/PHPExcel/CachedObjectStorage/APC.php index f6d974f..56ae7f8 100644 --- a/Classes/PHPExcel/CachedObjectStorage/APC.php +++ b/Classes/PHPExcel/CachedObjectStorage/APC.php @@ -46,7 +46,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) { $this->__destruct(); - throw new Exception('Failed to store cell '.$cellID.' in APC'); + throw new Exception('Failed to store cell '.$this->_currentObjectID.' in APC'); } $this->_currentCellIsDirty = false; } @@ -94,7 +94,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach if ($success === false) { // Entry no longer exists in APC, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in APC'); } return true; } @@ -121,7 +121,7 @@ class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_Cach if ($obj === false) { // Entry no longer exists in APC, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in APC'); } } else { // Return null if requested entry doesn't exist in cache diff --git a/Classes/PHPExcel/CachedObjectStorage/DiscISAM.php b/Classes/PHPExcel/CachedObjectStorage/DiscISAM.php index 84ffcc9..8a6f150 100644 --- a/Classes/PHPExcel/CachedObjectStorage/DiscISAM.php +++ b/Classes/PHPExcel/CachedObjectStorage/DiscISAM.php @@ -38,6 +38,8 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage private $_fileName = null; private $_fileHandle = null; + private $_cacheDirectory = NULL; + private function _storeData() { if ($this->_currentCellIsDirty) { @@ -116,7 +118,7 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage parent::copyCellCollection($parent); // Get a new id for the new file name $baseUnique = $this->_getUniqueID(); - $newFileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; + $newFileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; // Copy the existing cell cache file copy ($this->_fileName,$newFileName); $this->_fileName = $newFileName; @@ -140,11 +142,15 @@ class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage } // function unsetWorksheetCells() - public function __construct(PHPExcel_Worksheet $parent) { + public function __construct(PHPExcel_Worksheet $parent, $arguments) { + $this->_cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== NULL)) + ? $arguments['dir'] + : PHPExcel_Shared_File::sys_get_temp_dir(); + parent::__construct($parent); if (is_null($this->_fileHandle)) { $baseUnique = $this->_getUniqueID(); - $this->_fileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; + $this->_fileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; $this->_fileHandle = fopen($this->_fileName,'a+'); } } // function __construct() diff --git a/Classes/PHPExcel/CachedObjectStorage/Memcache.php b/Classes/PHPExcel/CachedObjectStorage/Memcache.php index 28b74e3..4a13410 100644 --- a/Classes/PHPExcel/CachedObjectStorage/Memcache.php +++ b/Classes/PHPExcel/CachedObjectStorage/Memcache.php @@ -50,7 +50,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { $this->__destruct(); - throw new Exception('Failed to store cell '.$cellID.' in MemCache'); + throw new Exception('Failed to store cell '.$this->_currentObjectID.' in MemCache'); } } $this->_currentCellIsDirty = false; @@ -99,7 +99,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage if ($success === false) { // Entry no longer exists in Memcache, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in MemCache'); } return true; } @@ -126,7 +126,7 @@ class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage if ($obj === false) { // Entry no longer exists in Memcache, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in MemCache'); } } else { // Return null if requested entry doesn't exist in cache diff --git a/Classes/PHPExcel/CachedObjectStorage/Wincache.php b/Classes/PHPExcel/CachedObjectStorage/Wincache.php index 14435b1..93ce954 100644 --- a/Classes/PHPExcel/CachedObjectStorage/Wincache.php +++ b/Classes/PHPExcel/CachedObjectStorage/Wincache.php @@ -48,12 +48,12 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) { if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { $this->__destruct(); - throw new Exception('Failed to store cell '.$cellID.' in WinCache'); + throw new Exception('Failed to store cell '.$this->_currentObjectID.' in WinCache'); } } else { if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { $this->__destruct(); - throw new Exception('Failed to store cell '.$cellID.' in WinCache'); + throw new Exception('Failed to store cell '.$this->_currentObjectID.' in WinCache'); } } $this->_currentCellIsDirty = false; @@ -103,7 +103,7 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage if ($success === false) { // Entry no longer exists in Wincache, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); } return true; } @@ -132,7 +132,7 @@ class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage if ($success === false) { // Entry no longer exists in WinCache, so clear it from the cache array parent::deleteCacheData($pCoord); - throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); + throw new Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); } } else { // Return null if requested entry doesn't exist in cache diff --git a/Classes/PHPExcel/CachedObjectStorageFactory.php b/Classes/PHPExcel/CachedObjectStorageFactory.php index d4c9479..cd402b2 100644 --- a/Classes/PHPExcel/CachedObjectStorageFactory.php +++ b/Classes/PHPExcel/CachedObjectStorageFactory.php @@ -37,7 +37,7 @@ class PHPExcel_CachedObjectStorageFactory { ), self::cache_to_phpTemp => array( 'memoryCacheSize' => '1MB' ), - self::cache_to_discISAM => array( + self::cache_to_discISAM => array( 'dir' => NULL ), self::cache_to_apc => array( 'cacheTime' => 600 ), diff --git a/Documentation/PHPExcel developer documentation.doc b/Documentation/PHPExcel developer documentation.doc index 563ece1a63df0e0304d9325259e0a14b00f5ada6..02b7839d76633bb6e7183bf4a90a2ae01a8f703c 100644 GIT binary patch delta 32766 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 delta 32117 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 diff --git a/changelog.txt b/changelog.txt index ee582a8..3015f5c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -39,8 +39,10 @@ Fixed in SVN: - Bugfix: (MBaker) Work item 16246 - reader/CSV fails on this file auto_detect_line_endings now set in CSV reader - Bugfix: (MBaker) Work item 16212 - $arguments improperly used in CachedObjectStorage/PHPTemp.php -- General: (MBaker) Work item 15405 - Two easy to fix Issues concerning PHPExcel_Token_Stack (l10n/UC) -- General: (MBaker) Work item 15461 - Locale file paths not fit for windows +- Bugfix: (MBaker) Work item 16643 - Bug In Cache System (cell reference when throwing caching errors) +- General: (MBaker) Work item 15405 - Two easy to fix Issues concerning PHPExcel_Token_Stack (l10n/UC) +- General: (MBaker) Work item 15461 - Locale file paths not fit for windows +- General: (MBaker) Work item 16643 - Add file directory as a cache option for cache_to_discISAM 2011-02-27 (v1.7.6):