Browse Source

Merge pull request #8792 from cakephp/travis-apcu

Make sure APCu is enabled for CLI on travis.
José Lorenzo Rodríguez 10 years ago
parent
commit
6a463bbec5
2 changed files with 15 additions and 5 deletions
  1. 1 0
      .travis.yml
  2. 14 5
      src/Cache/Engine/ApcEngine.php

+ 1 - 0
.travis.yml

@@ -59,6 +59,7 @@ before_install:
   - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]] ; then echo 'extension = memcached.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
   - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]] ; then echo 'extension = redis.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
   - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]] ; then echo 'extension = apcu.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
+  - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]] ; then echo 'apc.enable_cli = 1' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
   - if [[ $TRAVIS_PHP_VERSION =~ 5.[56] ]] ; then echo yes | pecl install apcu-4.0.10; fi
   - if [[ $TRAVIS_PHP_VERSION = 7.* ]] ; then echo yes | pecl install apcu; fi
   - if [[ $TRAVIS_PHP_VERSION = 7.* ]] ; then pecl config-set preferred_state beta; echo yes | pecl install apcu_bc; fi

+ 14 - 5
src/Cache/Engine/ApcEngine.php

@@ -142,11 +142,20 @@ class ApcEngine extends CacheEngine
         if ($check) {
             return true;
         }
-        $iterator = new APCUIterator(
-            '/^' . preg_quote($this->_config['prefix'], '/') . '/',
-            APC_ITER_NONE
-        );
-        apcu_delete($iterator);
+        if (class_exists('APCUIterator', false)) {
+            $iterator = new APCUIterator(
+                '/^' . preg_quote($this->_config['prefix'], '/') . '/',
+                APC_ITER_NONE
+            );
+            apcu_delete($iterator);
+            return true;
+        }
+        $cache = apcu_cache_info();
+        foreach ($cache['cache_list'] as $key) {
+            if (strpos($key['info'], $this->_config['prefix']) === 0) {
+                apcu_delete($key['info']);
+            }
+        }
         return true;
     }