rkr / service-dispatcher
0.3.8.1
2022-08-24 18:47 UTC
Requires
- php: >= 7.1
- ext-pdo: *
- dragonmantank/cron-expression: >= 3
- psr/log: >= 1.0
- rkr/php-ioc-contract: ~0.1@stable
Requires (Dev)
- phpstan/phpstan: >= 0.1
- phpunit/phpunit: >=7 <9
README
使用 SQLite 的常见用法
一个简单的服务调度器,用于 shell 脚本。目的是每分钟运行一个 php-cli 脚本,并让脚本决定在什么时间运行什么...
use Kir\Services\Cmd\Dispatcher\Dispatcher; require __DIR__ . '/vendor/autoload.php'; use Kir\Services\Cmd\Dispatcher\ServiceDispatcherBuilder; $dispatcher = ServiceDispatcherBuilder::withSQLite(__DIR__.'/services.db')->build(); $dispatcher->register('service1', Dispatcher::ONE_HOUR, function () { // Do something throw new Exception(); }); $dispatcher->register('service2', Dispatcher::ONE_HOUR * 3, function () { // Do something }); $dispatcher->run();
上面的例子展示了服务调度器的最简单用法。注册了两个服务:"Service1" 和 "Service2"。如果某个服务抛出异常,整个执行将停止。下次,失败的服务将在队列的末尾启动。如果一个服务成功执行,则超时调度器将在此情况下将服务调度到未来的 1 小时(3600 秒)。
MySQL 特定设置
use Kir\Services\Cmd\Dispatcher\ServiceDispatcherBuilder; require __DIR__ . '/vendor/autoload.php'; /* ... */ $dispatcher = ServiceDispatcherBuilder::withMySQL($pdo) ->useLocking(true) ->setLockPrefix('my-app:') ->build(); $dispatcher->register(/*...*/); /* ... */