[TASK] Make TYPO3 Core PSR-2 standard compliant
[Packages/TYPO3.CMS.git] / typo3 / sysext / install / Classes / Configuration / ExtbaseObjectCache / ApcPreset.php
1 <?php
2 namespace TYPO3\CMS\Install\Configuration\ExtbaseObjectCache;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Install\Configuration;
18
19 /**
20 * APC preset
21 */
22 class ApcPreset extends Configuration\AbstractPreset
23 {
24 /**
25 * @var string Name of preset
26 */
27 protected $name = 'Apc';
28
29 /**
30 * @var int Priority of preset
31 */
32 protected $priority = 80;
33
34 /**
35 * @var array Configuration values handled by this preset
36 */
37 protected $configurationValues = array(
38 'SYS/caching/cacheConfigurations/extbase_object' => array(
39 'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class,
40 'backend' => \TYPO3\CMS\Core\Cache\Backend\ApcBackend::class,
41 'options' => array(
42 'defaultLifetime' => 0,
43 ),
44 'groups' => array('system')
45 )
46 );
47
48 /**
49 * APC preset is available if extension is loaded, if APC has ~100MB
50 * memory and if ~5MB are free.
51 *
52 * @return bool TRUE
53 */
54 public function isAvailable()
55 {
56 $result = false;
57 if (extension_loaded('apc')) {
58 $memoryInfo = @apc_sma_info();
59 $totalMemory = $memoryInfo['num_seg'] * $memoryInfo['seg_size'];
60 $availableMemory = $memoryInfo['avail_mem'];
61
62 // If more than 99MB in total and more than 5MB free
63 if ($totalMemory > (99 * 1024 * 1024)
64 && $availableMemory > (5 * 1024 * 1024)) {
65 $result = true;
66 }
67 }
68 return $result;
69 }
70 }