Fixed bug #11326: Memcached backend does not work well if cache of a page shall expir...
authorOliver Hader <oliver.hader@typo3.org>
Sun, 29 Nov 2009 13:21:28 +0000 (13:21 +0000)
committerOliver Hader <oliver.hader@typo3.org>
Sun, 29 Nov 2009 13:21:28 +0000 (13:21 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6577 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/cache/backend/class.t3lib_cache_backend_apcbackend.php
t3lib/cache/backend/class.t3lib_cache_backend_memcachedbackend.php

index b2af94b..5021714 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
 
        * Fixed bug #12786: Wrong mouseover cursor at icon of docheader (thanks to Georg Ringer)
        * Fixed bug #12792: Unit test checkGetExtensionKeyByPrefix of the t3lib_extmgm_testcase fails
+       * Fixed bug #11326: Memcached backend does not work well if cache of a page shall expire after 30 days (thanks to Vladimir Podkovanov)
 
 2009-11-26  Francois Suter  <francois@typo3.org>
 
index 42e0656..3f447da 100644 (file)
@@ -81,9 +81,6 @@ class t3lib_cache_backend_ApcBackend extends t3lib_cache_backend_AbstractBackend
        /**
         * Saves data in the cache.
         *
-        * Note on lifetime: the number of seconds may not exceed 2592000 (30 days),
-        * otherwise it is interpreted as a UNIX timestamp (seconds since epoch).
-        *
         * @param string $entryIdentifier An identifier for this specific cache entry
         * @param string $data The data to be stored
         * @param array $tags Tags to associate with this cache entry
index b5a6660..6f73a28 100644 (file)
@@ -224,6 +224,12 @@ class t3lib_cache_backend_MemcachedBackend extends t3lib_cache_backend_AbstractB
                $tags[] = '%MEMCACHEBE%' . $this->cache->getIdentifier();
                $expiration = $lifetime !== NULL ? $lifetime : $this->defaultLifetime;
 
+                       // Memcached consideres values over 2592000 sec (30 days) as UNIX timestamp
+                       // thus $expiration should be converted from lifetime to UNIX timestamp
+               if ($expiration > 2592000) {
+                       $expiration += $GLOBALS['EXEC_TIME'];
+               }
+
                try {
                        if(strlen($data) > self::MAX_BUCKET_SIZE) {
                                $data = str_split($data, 1024 * 1000);