0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SOCKET-MANAGERを使った常駐型アプリ開発の手引き<UNITパラメータクラスの実装>

Posted at

はじめに

キューとUNITが常駐型処理状態のステータス管理を担っているのに対して、このクラスはデータドリブンによるステータス管理の役割を担い、専用のコマンドを使ってスキャフォールディングできます。

SocketManagerクラスを使う場合に比べて通信データの処理は必要なくなりますので、UNITを跨ったより簡易的なグローバルコンテキストを制御します。

▼キューとUNITの詳細については以下の記事を参照。

基底クラスのまま利用する場合は特に新たなクラスを生成する必要はありませんが、例えばサービス管理ランチャーのサービスリストを管理したり、SocketManagerクラスを使った通信サービスとの連携で必要になる独自仕様の拡張を行いたいような場合に以下のコマンドを使って生成します。

コマンド実行(ParameterForTestというクラス名を指定する場合)
> php worker runtime:parameter ParameterForTest

[success] UNITパラメータクラスの生成に成功しました (ParameterForTest)

コマンドを実行する事でapp/UnitParameterの場所にParameterForTestというクラス名でRuntimeManagerParameterクラスを継承したUNITパラメータクラスが生成されます。

このクラスでは、それぞれのステータスUNITの中でRuntimeManagerとのデータやフロー制御の橋渡し役も担いますので、以降ではその代表的なメソッドをご紹介しています。

キューとUNITの操作

ここでは実行中のキューとUNITを操作するメソッドをご紹介します。

➤キュー名の取得

現在実行中のキュー名を取得する時に使います。

シグネチャ
メソッドgetQueueName(): ?string

パラメータなし

戻り値string|null
    - string: 現在実行中のキュー名
    - null: なし

➤キュー名の設定

現在実行中、あるいは停止しているキューを設定する時に使います。

シグネチャ
メソッドsetQueueName(?string $p_name)

パラメータ
    $p_name - string|null - 必須 - 設定するキュー名

戻り値なし

➤ステータス名の取得

現在実行中のステータス名を取得する時に使います。
ポーリングUNITなど、自身のステータス名を記述する代わりに自動で返す場合などに役立ちます。

シグネチャ
メソッドgetStatusName(): ?string

パラメータなし

戻り値string|null
    - string: 現在実行中のステータス名
    - null: なし

➤ステータス名の設定

自身のRuntimeManager上ではステータスUNITの戻り値で制御できますが、このメソッドは外部から設定する時に役立ちます。

シグネチャ
メソッドsetStatusName(?string $p_name)

パラメータ
    $p_name - string|null - 必須 - 設定するステータス名

戻り値なし

中断や緊急停止系

それぞれ例外を発行するタイプですが目的に応じて以下のように挙動が異なります。

➤UNIT処理を中断する

現在のUNITが処理中であってもステータスを維持したまま処理を中断します。

シグネチャ
メソッドthrowBreak()

パラメータなし

戻り値なし

➤アプリ終了

例外を発行してアプリを正常終了させます。

シグネチャ
メソッドfinishShutdown()

パラメータなし

戻り値なし

➤緊急(即時)停止

例外を発行してアプリを緊急停止させ、初期化クラスで登録した緊急停止コールバックを呼び出します。

シグネチャ
メソッドemergencyShutdown()

パラメータなし

戻り値なし

おわりに

UNITパラメータクラスはデベロッパーによってインスタンス化され、初期化クラスのgetUnitParameterメソッドの戻り値に設定される事で利用可能になり、各UNIT引数を通して渡されます。

▼初期化クラスについてはこちらのページで解説しています

つまりフレームワーク内でインスタンス化する事はないので、動的にメモリを圧迫するような心配はなくなります。

通信処理を必要とするSocketManagerParameterクラスの詳細については以下の記事をご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?