From 7ccc4cea43e328bddf56504bc954c6e014ae1ef0 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 12 Jan 2017 15:38:28 -0800 Subject: [PATCH] With APCu 5+, use `apcu_*` function to examine cache state Summary: Ref T9640. APCu 5.0+ (for PHP7) uses `apcu_*` functions instead of `apc_` functions. Test for function existence and call the appropriate functions. Test Plan: {F2352695} Reviewers: chad Reviewed By: chad Maniphest Tasks: T9640 Differential Revision: https://secure.phabricator.com/D17198 --- .../cache/spec/PhabricatorDataCacheSpec.php | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/applications/cache/spec/PhabricatorDataCacheSpec.php b/src/applications/cache/spec/PhabricatorDataCacheSpec.php index eae5d75790..482af00d00 100644 --- a/src/applications/cache/spec/PhabricatorDataCacheSpec.php +++ b/src/applications/cache/spec/PhabricatorDataCacheSpec.php @@ -79,28 +79,40 @@ final class PhabricatorDataCacheSpec extends PhabricatorCacheSpec { } private function initAPCCommonSpec() { - $mem = apc_sma_info(); - $this->setTotalMemory($mem['num_seg'] * $mem['seg_size']); + $state = array(); - $info = apc_cache_info('user'); - $this->setUsedMemory($info['mem_size']); - $this->setEntryCount(count($info['cache_list'])); + if (function_exists('apcu_sma_info')) { + $mem = apcu_sma_info(); + $info = apcu_cache_info(); + } else if (function_exists('apc_sma_info')) { + $mem = apc_sma_info(); + $info = apc_cache_info('user'); + } else { + $mem = null; + } - $cache = $info['cache_list']; - $state = array(); - foreach ($cache as $item) { - $info = idx($item, 'info', ''); - $key = self::getKeyPattern($info); - if (empty($state[$key])) { - $state[$key] = array( - 'max' => 0, - 'total' => 0, - 'count' => 0, - ); + if ($mem) { + $this->setTotalMemory($mem['num_seg'] * $mem['seg_size']); + + $this->setUsedMemory($info['mem_size']); + $this->setEntryCount(count($info['cache_list'])); + + $cache = $info['cache_list']; + $state = array(); + foreach ($cache as $item) { + $info = idx($item, 'info', ''); + $key = self::getKeyPattern($info); + if (empty($state[$key])) { + $state[$key] = array( + 'max' => 0, + 'total' => 0, + 'count' => 0, + ); + } + $state[$key]['max'] = max($state[$key]['max'], $item['mem_size']); + $state[$key]['total'] += $item['mem_size']; + $state[$key]['count']++; } - $state[$key]['max'] = max($state[$key]['max'], $item['mem_size']); - $state[$key]['total'] += $item['mem_size']; - $state[$key]['count']++; } $this->setCacheSummary($state); -- 2.51.2