summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2016-09-01 14:00:17 +0200
committerGitHub <noreply@github.com>2016-09-01 14:00:17 +0200
commitbd170a370cd65d22a9a9cc86beeb6a52ef0a39aa (patch)
tree741c07f476287cebc15a91af5a123fd63c34ff7e
parent1ae4a2f9e4ed34a1f3fa6beae3cd513e2bdf51c3 (diff)
parent7f8c5ed4975524a8f7c65a0169cc3932c4a8dbf3 (diff)
downloadnextcloud-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.yml2
-rw-r--r--lib/private/Memcache/APCu.php32
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;
}
/**