BlackOps The PHP Framework
HTTPとWorkerの処理を一つのOperationとして扱い、受付・再試行・完了までを同じIDで追跡できるPHP Frameworkです。
入口がHTTPでもConsoleでもScheduleでも、ValueとContextをOperationへ渡し、InlineまたはDeferredの実行経路を選べます。
Stable 1.2.1
composer create-project blackops/skeleton my-app 1.2.1GenerateReport.phpPHP
#[Route(method: 'POST', path: '/reports')]
#[OperationType('report.generate')]
#[Deferred]
final readonly class GenerateReport implements Operation
{
public function handle(
GenerateReportValue $value,
ExecutionContext $context,
): ReportGenerated
{
return new ReportGenerated(
$value->reportName,
'/reports/generated/' . $value->reportName . '.json',
);
}
}HTTPの処理フロー
HTTPからOperationを実行する流れと、各段階で記録されるJournalイベントを確認できます。
HTTPリクエストを受けたプロセスで処理を実行し、完了した結果をレスポンスとして返す方式です。
現在の処理段階Inline 01 / 07
HTTPの入力をValueへ変換し、InlineまたはDeferredでOperationを実行してOutcomeへ進む処理経路の図。
図を読み込めません。下の説明とHTTPの処理ガイドから流れを確認できます。
※Deferredでは受付Commit後にHTTP 202の応答とWorkerの実行が重なることがあります。
BlackOpsを動かす
環境を用意し、サンプルで動きを確かめてから、自分のOperationを作ります。