sapiet / processor
该软件包最新版本(0.2.1)的许可信息不可用。
0.2.1
2020-12-21 15:21 UTC
Requires
- ext-json: *
Requires (Dev)
- symfony/var-dumper: ^5.1
README
此软件包允许您处理状态修改。
例如,当您有一个每分钟执行一次的 cron 作业,并且当您的脚本不工作时,您想通知某人,但不是每分钟通知一次!
安装
composer require sapiet/processor
用法
此示例模拟了一个每秒开始抛出异常的脚本。
此配置允许您每 4 秒执行一次操作。
如果省略了 Processor::ERROR_CALLBACK_DELAY_OPTION
选项,回调将只调用一次。
在此示例中,最后一次调用没有抛出异常,因此调用成功回调
<?php require 'vendor/autoload.php'; use Sapiet\Processor\Processor; use Sapiet\Processor\Resolvers\ExceptionResolver; use Sapiet\Processor\Storage\FileStorage; $processor = (new Processor()) ->withProcess(function (bool $success, int $sleep = 1) { sleep($sleep); if (false === $success) { throw new \Exception('Failed!'); } }) ->withResolver(new ExceptionResolver()) ->withStorage(new FileStorage('processor.txt')) ->withOption(Processor::ERROR_CALLBACK_DELAY_OPTION, 4) ->onSuccess(function() { echo 'Yeah!'.PHP_EOL; }) ->onError(function (array $bag) { echo sprintf('Oh noooo (%s)', $bag['exception']->getMessage()).PHP_EOL; }) ; $values = array_merge( [true], array_fill(0, 10, false), [true] ); foreach ($values as $value) { $processor->process($value); }
输出
Oh noooo (failed!)
Oh noooo (failed!)
Oh noooo (failed!)
Yeah!
您还可以使用 BooleanResolver
或根据您的脚本具有不同的行为,通过实现 ResolverInterface 并扩展 BaseResolver 简单地创建自己的。
只有一个可用的存储类,即 FileStorage
,但您可以轻松实现自己的存储类,通过实现 StorageInterface