DBトリガのPHP実行アクション
目次
機能概要
DBトリガのPHP実行アクションは、非同期アクションとして登録、更新、削除といった単一レコード操作をきっかけにして、PHPプログラムを実行できる機能です。
※非同期アクションの機能仕様はこちらを参照ください。
例えば、以下のようなことが実現できます。
・顧客からの問い合わせ発生時、外部チャットサービスへ連携し担当者へ通知する。
・会員管理において、会員情報が変更された場合に外部の基幹システムのマスタを最新情報に更新する。
機能仕様
プログラミング言語
PHP実行アクションに設定する言語は「PHP」です。
使用可能なPHPバージョンについてはPHPバージョンについてをご参照ください。
設定できる文字数は300,000文字です。
有効と無効の切り替え
設定したPHP実行アクションを、有効にするか無効にするか選択します。
新規作成直後は無効になっています。
また、プログラムを編集した直後は無効になります。
手動実行
PHP実行アクションを手動で実行することができます。
設定時の動作テストや、本番稼働中に手動で実行したい時に使用します。
実行ログ
実行ログを保存し、UI上でログを確認することができます。
ログで確認できる内容は以下の通りです。
- ・実行終了/実行失敗
- ・アクションジョブID
- ・リクエスト開始日時
- ・実行時間(ms)
- ・実行期間 (開始日時 - 終了日時)
- ・実行エラーが発生した場合、エラーメッセージ
ログの保存期間は90日間です。
※手動実行時のログは保存されません。
実行時のエラー通知メール
PHP実行アクション実行でエラーが発生した場合、エラー通知メールを配信します。
ユーザ設定でエラー通知メールを受信するか/受信しないかを選択できます。
詳しくは通知メール設定のPHP実行アクションをご参照ください。
※手動実行でエラーが発生した場合、エラー通知メールは配信しません。
アカウント管理権限のあるユーザ
対象アカウントのすべてのPHP実行アクションの通知メールが送信されます。
アカウント管理権限のないユーザ
アプリ管理権限(設定)をもつPHP実行アクションの通知メールが送信されます。
DBトリガに設定できる上限
DBトリガに設定できるPHP実行アクションは、登録/更新/削除トリガ毎に1個までです。
※PHP実行アクションの無効/有効を問いません。
詳しくは各種上限値をご参照ください。
実行時間を制限
PHP実行開始から30秒以内に処理が完了しない場合、以下のエラーを返します。
Execution timeout expired.
PHPの一部機能を制限
一部の関数、PHPクラス、およびパラメータについて、使用を制限しています。
制限している関数等については以下のリンク先をご参照ください。
PHP7.4で使用できない関数・PHPクラス・パラメータ一覧
PHP8.1で使用できない関数・PHPクラス・パラメータ一覧
制限している関数等を使用された場合、エラーを返します。
例)file_get_contents()
PHP7.4
file_get_contents() has been disabled for security reasons on line xx
PHP8.1
Call to undefined function file_get_contents() on line xx
PHP環境変数の使用不可
PHP実行アクションでは、PHP環境変数は使用できません。
PHP環境変数の呼び出しを実行した場合、以下のエラーを返します。
Call to undefined method SpiralCustomProgram::getEnvValue() on line xx
処理待ちについて
非同期で実行するアクションのため、アクションの順番待ちや実行順番が前後する場合があります。
なお、アクション履歴のログからアクション処理の待ち時間を以下の方法で確認することができます。
処理待ち時間の算出方法
PHP実行アクションの実行後、アクション履歴より処理待ち時間を算出できます。
「実行期間(開始 - 終了)」の「終了」-「実行時間」-「開始」=処理待ち時間となります。
例)実行期間(開始 - 終了)2023/7/28 12:00:00 - 2023/7/28 12:05:20
実行時間 20000(ms) の場合、
12:05:20 - 20000(ms) -12:00:00 = 05:00 のためプログラム実行までの待ち時間は05:00となる。
※1000(ms)=1秒
処理が大幅に遅延したと思われる場合はユーザーズデスクまでお問い合わせください。
独自クラス・関数
PHP実行アクションのPHPでは以下の関数を使用できます。
$SPIRAL->getRecord()
トリガが動作するきっかけとなったレコード値をPHP実行アクション内で使用できるようになります。
Response例
( [item] => Array ( [_id] => 1 [_updatedAt] => 2023-08-01T10:00:00Z [_revision] => 1 [_createdBy] => Array ( [formId] => XXXX [formType] => insert [siteId] => XXXX [from] => form [type] => anonym ) [_updatedBy] => Array ( [from] => ui [type] => user [userId] => XXXX ) [textField] => text [emailField] => spiral@example.com [selectField] => 3 [multiselectField] => Array ( [0] => 1 [1] => 3 ) [textareaField] => テキストエリア テキストエリア ) [options] => Array ( [selectField] => Array ( [1] => ラベル1 [2] => ラベル2 [3] => ラベル3 ) [multiselectField] => Array ( [1] => ラベル1 [2] => ラベル2 [3] => ラベル3 ) ) )
使用例
<?php $record = $SPIRAL->getRecord(); print_r ($record["item"]["textField"] ); ?>
削除トリガの場合、削除したレコードの値を扱えるよう、編集モーダルから選択した1フィールドが使用可能です。
選択可能フィールドタイプ:テキスト、メールアドレス、整数、数値
レコードIDの場合、フィールドの指定に関わらず使用可能です。
レコードIDを使用する方法
<?php $record = $SPIRAL->getRecord(); print_r ($record["item"]["_id"] ); ?>
UI:アクション作成
1.アプリ管理画面
アプリ管理画面からDBトリガの非同期アクションを作成します。
アプリ管理の左メニューから「DB」をクリックし、トリガを設定するDBを選択します。
2.アクション作成モーダル
「トリガ」タブをクリックし、DBトリガの種類を選択し、非同期アクションの「+」ボタンをクリックします。
プルダウンから「PHP実行」を選択します。
3.経路条件設定
アクション発動のきっかけとなるレコード操作について、操作経路をアクション発動の条件に設定します。
すべての経路または一部の経路(操作画面、API、フォーム)を選択します。
その他、PHP実行アクション作成モーダルの必要項目を入力し「作成」ボタンをクリックします。
4.PHPの実行バージョン
指定可能なPHPの実行バージョンを設定できます。
アプリ機能については、アプリ単位ごとに設定するPHPバージョンと、各PHP実行アクションごとに設定するPHPバージョンの指定があります。
詳細はPHPバージョンについてをご確認ください。
UI:有効/無効の切り替え
非同期アクション一覧のアクション名の横に現在のステータスが表示されます。
有効にする場合、表示名をクリックし詳細モーダル右上の「有効化」をクリックします。
「OK」ボタンをクリックします。
現在のステータスが「有効」になります。
UI:手動実行
任意のタイミングで実行する場合、詳細モーダルの「手動実行」をクリックします。
getRecord()関数を使用する場合はレコードIDを入力し「実行」ボタンをクリックします。
実行終了時の画面
エラーにならず実行が終了した場合、実行終了画面を表示します。
実行結果を閉じる場合、赤枠内の下向き矢印をクリックします。
エラー発生時の画面
エラーが発生した場合、実行失敗画面を表示します。
UI:アクション履歴
詳細モーダルより「アクション履歴」をクリックします。
履歴一覧が表示されます。履歴詳細を確認したいアクションジョブIDをクリックします。