kdn / 尝试计数器
执行某些操作尝试的抽象计数器。
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/php-invoker: >=1.0 <4.0
- phpunit/phpunit: >=4.0 <10.0
This package is auto-updated.
Last update: 2024-09-07 18:16:37 UTC
README
执行某些操作尝试的PHP抽象计数器。
需求
- PHP 5.4 或更高版本或 HHVM 3。
安装
安装此包的首选方法是通过 Composer。
安装,运行
php composer.phar require kdn/attempts-counter "*"
或添加
"kdn/attempts-counter": "*"
到您的 composer.json
文件的 require
部分。
使用方法
在网络问题的情况下重复获取URL内容
<?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);
一个更复杂的示例,说明由于各种原因失败,可以单独配置最大尝试次数和尝试之间的延迟
<?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);
有关更多详细信息,请参阅 Action 和 AttemptsCounter 类的公共方法文档。
测试
确保您已安装所有Composer依赖项(在存储库的基本目录中运行 composer update
)。在存储库的基本目录中运行PHPUnit。
./vendor/bin/phpunit
使用Docker测试
需求
启动并运行
-
为Composer提供凭据
cp auth.json.example \ auth.json
建议在
auth.json
中设置GitHub OAuth令牌(也称为个人访问令牌),但是如果您对安全性有疑虑,或者您懒得生成令牌,则可以替换auth.json
的内容为{}
,在大多数情况下这将有效。 -
为服务构建镜像
docker buildx bake --load --pull
或
docker buildx bake --load --pull --no-cache --progress plain
查看
docker buildx bake --help
获取详细信息。 -
以后台模式启动服务
docker-compose up --detach 8.1
此命令将使用PHP 8.1 启动服务。也允许
7.4
和5.6
,请参阅docker-compose.yml
中定义的服务。 -
在运行容器中执行测试
docker-compose exec 8.1 ./vendor/bin/phpunit
或者,您可以在运行容器中启动shell并从中执行测试
docker-compose exec 8.1 bash $ ./vendor/bin/phpunit
-
停止并删除由
up
创建的容器docker-compose down
您可能希望删除与容器一起的卷
docker-compose down --volumes
向后兼容性承诺
尝试计数器使用 Semver。这意味着版本被标记为 MAJOR.MINOR.PATCH。只有新的主版本才会被允许破坏向后兼容性(BC)。
PHP 8 引入了 命名参数,这增加了包维护者的成本并降低了灵活性。尝试计数器中方法的参数名称不包括在我们的BC承诺中。