Completed
Push — master ( 17dfca...2f9de9 )
by Samuel
01:17
created

ensureSuccessfulOpcacheCall()   A

Complexity

Conditions 6
Paths 5

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 7.7305

Importance

Changes 0
Metric Value
dl 0
loc 18
ccs 7
cts 11
cp 0.6364
rs 9.0444
c 0
b 0
f 0
cc 6
nc 5
nop 1
crap 7.7305
1
<?php
2
3
/*
4
 * This file is part of CacheTool.
5
 *
6
 * (c) Samuel Gordalina <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace CacheTool\Command;
13
14
use Symfony\Component\Console\Command\Command;
15
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
16
use Symfony\Component\DependencyInjection\ContainerInterface;
17
18
abstract class AbstractOpcacheCommand extends AbstractCommand
19
{
20
    /**
21
     * @param array $info
22
     */
23 2
    protected function ensureSuccessfulOpcacheCall($info)
24
    {
25 2
        if ($info === false) {
26
           throw new \RuntimeException('opcache_get_status(): No Opcache status info available.  Perhaps Opcache is disabled via opcache.enable or opcache.enable_cli?');
27
        }
28
29 2
        if ($info['restart_pending'] ?? false) {
30
            $cacheStatus = $info['cache_full'] ? 'Also, you cache is full.' : '';
31
            throw new \RuntimeException("OPCache is restart, as such files can't be invalidated. Try again later. ${cacheStatus}");
32
        }
33
34 2
        $file_cache_only = $info['file_cache_only'] ?? false;
35 2
        $opcache_enabled = $info['opcache_enabled'] ?? false;
36
37 2
        if (!$opcache_enabled && $file_cache_only) {
38
            throw new \RuntimeException("Couldn't execute command because opcache is only functioning as a file cache. Set `opcache.file_cache_only` to false if you want to use this command. Read more at https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.file-cache-only");
39
        }
40 2
    }
41
}
42