rkr/service-dispatcher

0.3.8.1 2022-08-24 18:47 UTC

README

Build Status Scrutinizer Code Quality Latest Stable Version License

使用 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(/*...*/);

/* ...  */