phpdocs and example of weakening metric observer (#1078)

This commit is contained in:
Brett McBride 2023-07-11 09:36:04 +10:00 committed by GitHub
parent c9c83117e7
commit 5853adabf1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
use OpenTelemetry\API\Metrics\ObserverInterface;
use OpenTelemetry\SDK\Metrics\Data\Temporality;
use OpenTelemetry\SDK\Metrics\MeterProvider;
use OpenTelemetry\SDK\Metrics\MetricExporter\ConsoleMetricsExporter;
use OpenTelemetry\SDK\Metrics\MetricReader\ExportingReader;
use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
require 'vendor/autoload.php';
/**
* Example of using `weaken` on observer callbacks. Creates a weak reference to the
* callback, so that internal references to the callback do not stop garbage collection on
* the original object
*/
$reader = new ExportingReader(
new ConsoleMetricsExporter(Temporality::DELTA)
);
$meterProvider = MeterProvider::builder()
->setResource(ResourceInfoFactory::emptyResource())
->addReader($reader)
->build();
$callback = new class() {
public function __invoke(ObserverInterface $observer)
{
$observer->observe(random_int(1, 10));
}
};
$meterProvider
->getMeter('demo_meter')
->createObservableGauge('number', 'items', 'Random number')
->observe($callback, true); //weak-ref to callback
$reader->collect(); //metrics (data-points) collected (callback invoked)
unset($callback);
$reader->collect(); //no metrics (data-points) collected, because the callback was garbage-collected due to weak-ref

View File

@ -10,6 +10,8 @@ interface ObservableCounterInterface
/**
* @param callable(ObserverInterface): void $callback function responsible for
* reporting the measurements (as absolute values)
* @param bool $weaken Create a weak reference to the callback so that it
* does not stop garbage collection
* @return ObservableCallbackInterface token to detach callback
*/
public function observe(callable $callback, bool $weaken = false): ObservableCallbackInterface;

View File

@ -10,6 +10,8 @@ interface ObservableGaugeInterface
/**
* @param callable(ObserverInterface): void $callback function responsible for
* reporting the measurements
* @param bool $weaken Create a weak reference to the callback so that it
* does not stop garbage collection
* @return ObservableCallbackInterface token to detach callback
*/
public function observe(callable $callback, bool $weaken = false): ObservableCallbackInterface;

View File

@ -10,6 +10,8 @@ interface ObservableUpDownCounterInterface
/**
* @param callable(ObserverInterface): void $callback function responsible for
* reporting the measurements (as absolute values)
* @param bool $weaken Create a weak reference to the callback so that it
* does not stop garbage collection
* @return ObservableCallbackInterface token to detach callback
*/
public function observe(callable $callback, bool $weaken = false): ObservableCallbackInterface;