estvoyage/statsd

面向东的StatsD客户端

dev-master 2015-04-29 09:54 UTC

This package is auto-updated.

Last update: 2024-08-28 08:37:01 UTC


README

PHP编写的面向东的StatsD客户端!

类似于 statsd-phpestvoyage\statsd 是一个用PHP编写的 StatsD 客户端。
然而,它使用东向指南针进行设计,因此所有类中的所有公共方法都返回 $this,即类的实例或任何不是类属性的值。
为什么?因为这个独特规则的严格应用减少了耦合以及需要编写的代码量,同时增加了代码的清晰度、内聚性、灵活性、可重用性和可测试性。
实际上,使用东向原则强制使用接口进行抽象,以及缺少getter强制使用 tell, don't ask 原则、控制反转、依赖注入和接口。

安装

使用 estvoyage\statsd 的最小PHP版本是5.6。
推荐通过 Composer 安装,只需在您的 composer.json 中添加此内容,然后执行 php composer.phar install

{
    "require": {
        "estvoyage/statsd": "@dev"
    }
}

使用方法

简而言之

<?php

require __DIR__ . '/../vendor/autoload.php';

use
	estvoyage\data
	estvoyage\statsd,
	estvoyage\statsd\metric,
	estvoyage\statsd\metric\bucket,
	estvoyage\statsd\metric\value,
	estvoyage\statsd\metric\sampling
;

class console implements data\consumer
{
	function dataProviderIs(data\provider $dataProvider)
	{
		$dataProvider->dataConsumerIs($this);

		return $this;
	}

	function newData(data\data $data)
	{
		echo 'New metric: <' . str_replace("\n", '\n' , $data) . '>' . PHP_EOL;

		return $this;
	}

	function noMoreData()
	{
		return $this;
	}
}

(new statsd\client\etsy(new metric\consumer\dataConsumer(new console)))
	->newStatsdMetric(new metric\counting(new bucket('gorets')))
	->newStatsdMetric(new metric\counting(new bucket('gorets'), new value(666)))
	->newStatsdMetric(new metric\counting(new bucket('gorets'), new value(999), new sampling(.1)))
	->newStatsdMetric(new metric\timing(new bucket('glork'), new value(320)))
	->newStatsdMetric(new metric\timing(new bucket('glork'), new value(320), new sampling(.1)))
	->newStatsdMetric(new metric\gauge(new bucket('gaugor'), new value(333)))
	->newStatsdMetric(new metric\set(new bucket('uniques'), new value(765)))
;

/* Output should be something like:
New metric: <gorets:1|c\n>
New metric: <gorets:666|c\n>
New metric: <gorets:999|c|@0.1\n>
New metric: <glork:320|ms\n>
New metric: <glork:320|ms|@0.1\n>
New metric: <gaugor:333|g\n>
New metric: <uniques:765|s\n>
*/

在捆绑的 examples 目录中有一个可工作的脚本,只需执行 php examples/nutshell.php 来运行它。在 examples 目录中还有关于数据包、mtu、套接字和度量提供程序的更多有趣示例。

单元测试

使用Composer设置测试套件

$ composer install --dev

使用 atoum 运行

$ vendor/bin/atoum

贡献

有关详细信息,请参阅捆绑的 CONTRIBUTING 文件。

许可

estvoyage\statsd 在FreeBSD许可证下发布,有关详细信息,请参阅捆绑的 COPYING 文件。