定制 fullpipe/check-them 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fullpipe/check-them

最新稳定版本:1.0.1

Composer 安装命令:

composer require fullpipe/check-them

包简介

Health checks for external services

README 文档

README

Install

composer require fullpipe/check-them

Usage

use Fullpipe\CheckThem\Checks\PDOCheck;

$mysqlCheck = new PDOCheck('mysql:dbname=test_db;host=127.0.0.1:3306', 'username', 'password');
$status = $mysqlCheck->getStatus();

if(!$status->isUp()) {
    $this->logger->warn('Mysql server is down', $status->getError());
    exit;
}

or use AllInOneCheck

use Fullpipe\CheckThem\Checks\AllInOneCheck;
use Fullpipe\CheckThem\Checks\PDOCheck;
use Fullpipe\CheckThem\Checks\HttpCheck;
use Fullpipe\CheckThem\Checks\RedisChecker;

...

$allInOne = new AllInOneCheck();

$allInOne->add(new PDOCheck('mysql:dbname=test_db;host=127.0.0.1:3306', 'username', 'password'));
$allInOne->add(new HttpCheck('user_service:8080'));
$allInOne->add(new RedisChecker('redis:6379'));

$status = $allInOne->getStatus();

if(!$status->isUp()) {
    $this->logger->warn('Something is down', $status->getError());
    exit;
}

// everything is fine

Available checks

PDOCheck

It is just a simple wrapper over php.PDO. It has the same constructor signature as the PDO class. In theory, it works with all PDO drivers, but was tested only against MySQL and Postgres.

Examples

use Fullpipe\CheckThem\Checks\PDOCheck;

...

$mysqlCheck = new PDOCheck('mysql:dbname=test_db;host=127.0.0.1:3306', 'username', 'password');
$pgCheck = new PDOCheck('pgsql:host=localhost;port=8002;dbname=test_db', 'username', 'password');

HttpCheck

Check external service by http request. To be up service should respond with 200 http code.

Examples

use Fullpipe\CheckThem\Checks\HttpCheck;

...

$userCheck = new HttpCheck('http://user_service:8080/healthz');
$webCheck = new HttpCheck('https://google.com/');

Config

$check = (new HttpCheck('http://user_service:8080/healthz'))
    ->setConnectionTimeout(3) // change connection timeout, default 1 second
    ;

RedisCheck

Checks redis server with PING -> PONG request.

Examples

use Fullpipe\CheckThem\Checks\RedisCheck;

...

$check = new RedisCheck('tcp://10.0.0.1:6379');
$check = new RedisCheck('unix:/path/to/redis.sock');

Config

$check = (new RedisCheck('redis:6379'))
    ->setAuth('test_pass') // use password if required
    ->setConnectionTimeout(4) // timeout for server connection, default 1 second
    ->setStreamTimeout(3) // timeout for socket read/write operations, default 1 second
    ;

PredisCheck

If you already work with redis using predis. You could use predis client for PING check.

Examples

use Fullpipe\CheckThem\Checks\PredisCheck;

...

$client = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => '10.0.0.1',
    'port'   => 6379,
]);
$check = new PredisCheck($client);

SocketCheck

Connects to service and waits for single char from service over a socket connection.

Examples

use Fullpipe\CheckThem\Checks\SocketCheck;

...

// you could use this check for mysql,
// it work fine and you don't need a password
$check = new SocketCheck('mysql:3306');

Config

$check = (new SocketCheck('mysql:3306'))
    ->setConnectionTimeout(4) // timeout for server connection, default 1 second
    ->setStreamTimeout(3) // timeout for socket read/write operations, default 1 second
    ;

SocketConnectionCheck

Checks only that socket connection is working. It is not the check that you could rely on.

Examples

use Fullpipe\CheckThem\Checks\SocketConnectionCheck;

...

$check = new SocketConnectionCheck('rabbitmq:5672');

Config

$check = (new SocketConnectionCheck('mysql:3306'))
    ->setConnectionTimeout(4) // timeout for server connection, default 1 second
    ;

AllInOneCheck

Checks all children to be available.

Examples

use Fullpipe\CheckThem\Checks\AllInOneCheck;
use Fullpipe\CheckThem\Checks\SocketCheck;
use Fullpipe\CheckThem\Checks\RedisCheck;

...

$check = (new AllInOneCheck())
    ->add(new SocketCheck('mysql:3306'))
    ->add((new RedisCheck('tcp://10.0.0.1:6379'))->setAuth('redisPass'))
    ;

Test

composer install
docker-compose -f tests/docker-compose.yml up -d
./vendor/bin/phpunit

or if you want to play with service availability

docker-compose -f tests/docker-compose.yml up -d
php ./tests/realtime_test.php
docker-compose -f tests/docker-compose.yml restart mysql57

统计信息

  • 总下载量: 8.89k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 32
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 32
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-11-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固