Skip to content
This repository was archived by the owner on Oct 22, 2019. It is now read-only.

Commit 30fd249

Browse files
authored
Merge pull request #36 from krukru/InMemory-impl
In memory impl
2 parents 1d8c990 + 629961d commit 30fd249

12 files changed

Lines changed: 354 additions & 59 deletions

File tree

README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ If using Redis, we recommend to run a local Redis instance next to your PHP work
1010
## How does it work?
1111

1212
Usually PHP worker processes don't share any state.
13-
You can pick from two adapters.
14-
One uses Redis the other APC.
15-
While the former needs a separate binary running, the latter just needs the [APC](https://pecl.php.net/package/APCU) extension to be installed.
13+
You can pick from three adapters.
14+
Redis, APC or an in memory adapter.
15+
While the first needs a separate binary running, the second just needs the [APC](https://pecl.php.net/package/APCU) extension to be installed. If you don't need persistent metrics between requests (e.g. a long running cron job or script) the in memory adapter might be suitable to use.
1616

1717
## Usage
1818

@@ -73,6 +73,17 @@ Change the Redis options (the example shows the defaults):
7373
);
7474
```
7575

76+
Using the InMemory storage:
77+
```php
78+
$registry = new CollectorRegistry(new InMemory());
79+
80+
$counter = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);
81+
$counter->incBy(3, ['blue']);
82+
83+
$renderer = new RenderTextFormat();
84+
$result = $renderer->render($registry->getMetricFamilySamples());
85+
```
86+
7687
Also look at the [examples](examples).
7788

7889
## Development

examples/flush_adapter.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33

44
$adapter = $_GET['adapter'];
55

6-
if ($adapter == 'redis') {
6+
if ($adapter === 'redis') {
77
define('REDIS_HOST', isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1');
88

99
$redisAdapter = new Prometheus\Storage\Redis(array('host' => REDIS_HOST));
1010
$redisAdapter->flushRedis();
11-
}
12-
13-
if ($adapter == 'apc') {
11+
} elseif ($adapter === 'apc') {
1412
$apcAdapter = new Prometheus\Storage\APC();
1513
$apcAdapter->flushAPC();
16-
}
14+
} elseif ($adapter === 'in-memory') {
15+
$inMemoryAdapter = new Prometheus\Storage\InMemory();
16+
$inMemoryAdapter->flushMemory();
17+
}

examples/metrics.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88

99
$adapter = $_GET['adapter'];
1010

11-
if ($adapter == 'redis') {
11+
if ($adapter === 'redis') {
1212
Redis::setDefaultOptions(array('host' => isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1'));
1313
$adapter = new Prometheus\Storage\Redis();
14-
}
15-
if ($adapter == 'apc') {
14+
} elseif ($adapter === 'apc') {
1615
$adapter = new Prometheus\Storage\APC();
16+
} elseif ($adapter === 'in-memory') {
17+
$adapter = new Prometheus\Storage\InMemory();
1718
}
1819
$registry = new CollectorRegistry($adapter);
1920
$renderer = new RenderTextFormat();

examples/pushgateway.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
<?php
22
require __DIR__ . '/../vendor/autoload.php';
33

4+
use Prometheus\Storage\Redis;
45
use Prometheus\CollectorRegistry;
56

6-
$adapter = new Prometheus\Storage\APC();
7+
$adapter = $_GET['adapter'];
8+
9+
if ($adapter === 'redis') {
10+
Redis::setDefaultOptions(array('host' => isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1'));
11+
$adapter = new Prometheus\Storage\Redis();
12+
} elseif ($adapter === 'apc') {
13+
$adapter = new Prometheus\Storage\APC();
14+
} elseif ($adapter === 'in-memory') {
15+
$adapter = new Prometheus\Storage\InMemory();
16+
}
17+
718
$registry = new CollectorRegistry($adapter);
819

920
$counter = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);

examples/some_counter.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
use Prometheus\CollectorRegistry;
66
use Prometheus\Storage\Redis;
77

8-
error_log('c='. $_GET['c']);
9-
108
$adapter = $_GET['adapter'];
119

12-
if ($adapter == 'redis') {
10+
if ($adapter === 'redis') {
1311
Redis::setDefaultOptions(array('host' => isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1'));
1412
$adapter = new Prometheus\Storage\Redis();
15-
}
16-
if ($adapter == 'apc') {
13+
} elseif ($adapter === 'apc') {
1714
$adapter = new Prometheus\Storage\APC();
15+
} elseif ($adapter === 'in-memory') {
16+
$adapter = new Prometheus\Storage\InMemory();
1817
}
1918
$registry = new CollectorRegistry($adapter);
2019

examples/some_gauge.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
$adapter = $_GET['adapter'];
1212

13-
if ($adapter == 'redis') {
13+
if ($adapter === 'redis') {
1414
Redis::setDefaultOptions(array('host' => isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1'));
1515
$adapter = new Prometheus\Storage\Redis();
16-
}
17-
if ($adapter == 'apc') {
16+
} elseif ($adapter === 'apc') {
1817
$adapter = new Prometheus\Storage\APC();
18+
} elseif ($adapter === 'in-memory') {
19+
$adapter = new Prometheus\Storage\InMemory();
1920
}
2021
$registry = new CollectorRegistry($adapter);
2122

examples/some_histogram.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99

1010
$adapter = $_GET['adapter'];
1111

12-
if ($adapter == 'redis') {
12+
if ($adapter === 'redis') {
1313
Redis::setDefaultOptions(array('host' => isset($_SERVER['REDIS_HOST']) ? $_SERVER['REDIS_HOST'] : '127.0.0.1'));
1414
$adapter = new Prometheus\Storage\Redis();
15-
}
16-
if ($adapter == 'apc') {
15+
} elseif ($adapter === 'apc') {
1716
$adapter = new Prometheus\Storage\APC();
17+
} elseif ($adapter === 'in-memory') {
18+
$adapter = new Prometheus\Storage\InMemory();
1819
}
1920
$registry = new CollectorRegistry($adapter);
2021

0 commit comments

Comments
 (0)