kdn/attempts-counter 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

kdn/attempts-counter

Composer 安装命令:

composer require kdn/attempts-counter

包简介

An abstract counter of attempts to perform some actions.

README 文档

README

An abstract PHP counter of attempts to perform some actions.

License Latest Stable Version Code Coverage Scrutinizer Code Quality Code Climate

Requirements

  • PHP 5.4 or later or HHVM 3.

Installation

The preferred way to install this package is through Composer.

To install, either run

php composer.phar require kdn/attempts-counter "*"

or add

"kdn/attempts-counter": "*"

to the require section of your composer.json file.

Usage

Repeat the retrieving of URL content in case of network problems:

<?php

use kdn\attemptsCounter\Action;

$contents = false;
$action = new Action('query-url', 10, 3 * 10 ** 9); // up to 10 attempts, 3 seconds delay between attempts
while ($contents === false) {
    $contents = @file_get_contents('https://unreliable.site');
    $action->increment();
}
var_dump($contents);

A more sophisticated example illustrating failures for various reasons, the maximum number of attempts and the delay between attempts can be configured separately:

<?php

use kdn\attemptsCounter\Action;
use kdn\attemptsCounter\AttemptsCounter;

function generateId() {
    return mt_rand(0, 30);
}

$ids = [];
$counter = new AttemptsCounter();
$counter->addAction(new Action('generate-unique', 5))
    ->addAction(new Action('generate-odd', 10));
while (count($ids) < 10) {
    $id = generateId();
    if ($id % 2 === 0) {
        $counter->getAction('generate-odd')->increment();
        continue;
    }
    if (in_array($id, $ids, true)) {
        $counter->getAction('generate-unique')->increment();
        continue;
    }
    $ids[] = $id;
}
var_dump($ids);

For further details, please see the documentation for the public methods in the Action and AttemptsCounter classes.

Testing

Make sure you installed all Composer dependencies (run composer update in the base directory of repository). Run PHPUnit in the base directory of repository:

./vendor/bin/phpunit

Testing using Docker

Requirements

Up and running

  1. Provide credentials for Composer:

    cp auth.json.example \
        auth.json

    I suggest to set GitHub OAuth token (also known as personal access token) in auth.json, however if you have doubts about security, or you are lazy to generate token then you can replace content of auth.json on {}, in most cases this will work.

  2. Build images for services:

    docker buildx bake --load --pull

    or

    docker buildx bake --load --pull --no-cache --progress plain

    see docker buildx bake --help for details.

  3. Start service in background mode:

    docker-compose up --detach 8.1

    This command will start the service with PHP 8.1. Also allowed 7.4 and 5.6, see services defined in docker-compose.yml.

  4. Execute tests in the running container:

    docker-compose exec 8.1 ./vendor/bin/phpunit

    Alternatively you can start a shell in the running container and execute tests from it:

    docker-compose exec 8.1 bash
    $ ./vendor/bin/phpunit
  5. Stop and remove containers created by up:

    docker-compose down

    You may want to remove volumes along with containers:

    docker-compose down --volumes

Backward compatibility promise

attempts-counter is using Semver. This means that versions are tagged with MAJOR.MINOR.PATCH. Only a new major version will be allowed to break backward compatibility (BC).

PHP 8 introduced named arguments, which increased the cost and reduces flexibility for package maintainers. The names of the arguments for methods in attempts-counter is not included in our BC promise.

统计信息

  • 总下载量: 24
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-09-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固