Issues (96)

src/Tasks/TestCacheSupportTask.php (10 issues)

1
<?php
2
3
namespace LeKoala\DevToolkit\Tasks;
4
5
use stdClass;
6
use Predis\Client;
0 ignored issues
show
The type Predis\Client was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use Predis\Command\ServerInfo;
0 ignored issues
show
The type Predis\Command\ServerInfo was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use SilverStripe\Dev\BuildTask;
9
use LeKoala\DevToolkit\BuildTaskTools;
10
use SilverStripe\Core\Injector\Injector;
11
use LeKoala\Base\Cache\RedisCacheFactory;
0 ignored issues
show
The type LeKoala\Base\Cache\RedisCacheFactory was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
13
/**
14
 */
15
class TestCacheSupportTask extends BuildTask
16
{
17
    use BuildTaskTools;
18
19
    protected $title = "Test Cache Support";
20
    protected $description = 'Check what cache backends are available and working.';
21
    private static $segment = 'TestCacheSupportTask';
0 ignored issues
show
The private property $segment is not used, and could be removed.
Loading history...
22
23
    public function run($request)
24
    {
25
        $this->request = $request;
26
27
        $this->testMemcache();
28
        $this->testOpcache();
29
        $this->testRedis();
30
    }
31
32
    protected function testRedis()
33
    {
34
        $predis = new Client('tcp://127.0.0.1:6379');
35
        $this->message($predis->executeCommand(new ServerInfo));
36
37
        $args = [];
38
        $redisCache = Injector::inst()->createWithArgs(RedisCacheFactory::class, $args);
39
        $this->message($redisCache);
40
    }
41
42
    protected function testOpcache()
43
    {
44
        if (!function_exists('opcache_get_status')) {
45
            $this->msg("opcache_get_status function is not defined");
0 ignored issues
show
The method msg() does not exist on LeKoala\DevToolkit\Tasks\TestCacheSupportTask. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

45
            $this->/** @scrutinizer ignore-call */ 
46
                   msg("opcache_get_status function is not defined");
Loading history...
46
        }
47
48
        $result = opcache_get_status();
49
        if ($result) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $result of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
50
            $this->msg("Opcache is active");
51
52
            echo '<pre>';
53
            print_r($result);
54
            echo '</pre>';
55
        } else {
56
            $this->msg("Opcache is disabled. It should be enabled to ensure optimal performances", "error");
57
        }
58
    }
59
    protected function testMemcache()
60
    {
61
        if (!class_exists('Memcache')) {
62
            $this->msg("Memcache class does not exist. Make sure that the Memcache extension is installed");
63
        }
64
65
        $host = defined('MEMCACHE_HOST') ? MEMCACHE_HOST : 'localhost';
0 ignored issues
show
The constant LeKoala\DevToolkit\Tasks\MEMCACHE_HOST was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
66
        $port = defined('MEMCACHE_PORT') ? MEMCACHE_PORT : 11211;
0 ignored issues
show
The constant LeKoala\DevToolkit\Tasks\MEMCACHE_PORT was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
67
68
        $memcache = new \Memcache;
69
        $connected = $memcache->connect($host, $port);
70
71
        if ($connected) {
72
            $this->msg("Server's version: " . $memcache->getVersion());
73
74
            $result = $memcache->get("key");
75
76
            if ($result) {
77
                $this->msg("Data found in cache");
78
            } else {
79
                $this->msg("Data not found in cache");
80
                $tmp_object = new stdClass;
81
                $tmp_object->str_attr = "test";
82
                $tmp_object->int_attr = 123;
83
                $tmp_object->time = time();
84
                $tmp_object->date = date('Y-m-d H:i:s');
85
                $tmp_object->arr = array(1, 2, 3);
86
                $memcache->set("key", $tmp_object, false, 10);
0 ignored issues
show
false of type false is incompatible with the type integer expected by parameter $flag of MemcachePool::set(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

86
                $memcache->set("key", $tmp_object, /** @scrutinizer ignore-type */ false, 10);
Loading history...
87
            }
88
89
            $this->msg("Store data in the cache (data will expire in 10 seconds)");
90
            $this->msg("Data from the cache:");
91
            echo '<pre>';
92
            var_dump($memcache->get("key"));
0 ignored issues
show
Security Debugging Code introduced by
var_dump($memcache->get('key')) looks like debug code. Are you sure you do not want to remove it?
Loading history...
93
            echo '</pre>';
94
        } else {
95
            $this->msg("Failed to connect");
96
        }
97
    }
98
}
99