diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2016-09-01 14:00:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-01 14:00:17 +0200 |
commit | bd170a370cd65d22a9a9cc86beeb6a52ef0a39aa (patch) | |
tree | 741c07f476287cebc15a91af5a123fd63c34ff7e | |
parent | 1ae4a2f9e4ed34a1f3fa6beae3cd513e2bdf51c3 (diff) | |
parent | 7f8c5ed4975524a8f7c65a0169cc3932c4a8dbf3 (diff) | |
download | nextcloud-server-bd170a370cd65d22a9a9cc86beeb6a52ef0a39aa.tar.gz nextcloud-server-bd170a370cd65d22a9a9cc86beeb6a52ef0a39aa.zip |
Merge pull request #1230 from nextcloud/php7-apcu
Activate APCu on PHP 7
-rw-r--r-- | .drone.yml | 2 | ||||
-rw-r--r-- | lib/private/Memcache/APCu.php | 32 |
2 files changed, 31 insertions, 3 deletions
diff --git a/.drone.yml b/.drone.yml index 6016ebd6981..bbeb85df927 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ build: - git submodule update --init - NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite nodb-php7.0: - image: nextcloudci/php7.0:1.0.9 + image: nextcloudci/php7.0:php7.0-1 commands: - rm -rf data/* config/config.php # TODO: remove this - temporary fix for CI issues - git submodule update --init diff --git a/lib/private/Memcache/APCu.php b/lib/private/Memcache/APCu.php index 713ed152648..70f0d73d2d4 100644 --- a/lib/private/Memcache/APCu.php +++ b/lib/private/Memcache/APCu.php @@ -88,7 +88,21 @@ class APCu extends Cache implements IMemcache { */ public function inc($key, $step = 1) { $this->add($key, 0); - return apcu_inc($this->getPrefix() . $key, $step); + /** + * TODO - hack around a PHP 7 specific issue in APCu + * + * on PHP 7 the apcu_inc method on a non-existing object will increment + * "0" and result in "1" as value - therefore we check for existence + * first + * + * on PHP 5.6 this is not the case + * + * see https://github.com/krakjoe/apcu/issues/183#issuecomment-244038221 + * for details + */ + return apcu_exists($this->getPrefix() . $key) + ? apcu_inc($this->getPrefix() . $key, $step) + : false; } /** @@ -99,7 +113,21 @@ class APCu extends Cache implements IMemcache { * @return int | bool */ public function dec($key, $step = 1) { - return apcu_dec($this->getPrefix() . $key, $step); + /** + * TODO - hack around a PHP 7 specific issue in APCu + * + * on PHP 7 the apcu_dec method on a non-existing object will decrement + * "0" and result in "-1" as value - therefore we check for existence + * first + * + * on PHP 5.6 this is not the case + * + * see https://github.com/krakjoe/apcu/issues/183#issuecomment-244038221 + * for details + */ + return apcu_exists($this->getPrefix() . $key) + ? apcu_dec($this->getPrefix() . $key, $step) + : false; } /** |