排他制御|iill_MMpStatus
iill_MMpStatus( int )
MailMakerPop+.fmx 2.0.1.3 以降
構文
iill_MMpStatus( 0 or 1 )
引数
0 or 1
1 = プラグインの使用開始を宣言する。
0 = プラグインの使用終了を宣言する。
戻り値
0 or タイムスタンプ
引数(1)の場合、
別のプロセスで既にプラグインの使用開始宣言がされている場合、
その時のタイムスタンプ
プラグインの使用開始宣言がされていない場合、
0
引数(0)の場合、
0
説明
FileMaker Server スケジュールで【MailMakerPop+ for FileMaker Server】を使用する場合の排他制御の為に使用します。
FileMaker Pro(クライアント)で【MailMakerPop+】を利用の場合は、特に「iill_MMpStatus( int )」関数を設定する必要は、ありません。
【MailMakerPop+ for FileMaker Server】は、プラグイン内部で情報(メモリ)を共有しています。 その為、FileMaker Server スケジュールで【MailMakerPop+ for FileMaker Server】を利用したFileMakerスクリプトの実行が重なってしまうと動作不良になります。
FileMaker Server スケジュールから実行する場合、「MailMakerPop+ for FileMaker Server」を使用したスクリプトの実行が、重ならない様に設定すると共に「iill_MMpStatus( int )」関数で明示的に排他制御を行なって下さい。
注意
「iill_MMpStatus( int )」関数は、プラグインの使用開始・終了のフラグを立てているだけで、この関数自体で排他制御をしているわけではありません。
排他制御は、FileMakerのスクリプトで行なって下さい。
例
#プラグインの使用開始を宣言する。
変数を設定 [$MMpStatus; 値:iill_MMpStatus(1)]
既にプラグインの使用開始宣言がされている場合、
その時のタイムスタンプ 例:2013/3/7 17:18:30 が返ります。
プラグインの使用開始宣言がされていない場合、「0」 が返ります。
戻り値が「0」の場合、処理をすすめる。 戻り値が タイムスタンプ 例:2013/3/7 17:18:30 の場合、処理を停止するようにFileMakerスクリプトを設定して下さい。
#プラグインの使用終了を宣言する。
変数を設定 [$MMpStatus; 値:iill_MMpStatus(0)]
別のプロセスの宣言でも強制的に「0」を設定します。
例では、何かしらのトラブルでプラグインの使用開始状態のままで20分以上立っている場合は、強制解除し、スクリプトの処理を続行するようになっています!
変数を設定 [$MMpStatus; 値:iill_MMpStatus(1)]
If [$MMpStatus ≠ 0]
変数を設定 [$MMpStatusTS; 値:GetAsTimestamp ( $MMpStatus )]
#20分以上立っている場合は、強制解除
If [$MMpStatusTS+1200 < Get ( タイムスタンプ )]
変数を設定 [$MMpStatus; 値:iill_MMpStatus(0)]
変数を設定 [$MMpStatus; 値:iill_MMpStatus(1)]
Else
#Log記録|MMPLib_Error_Log
変数を設定 [$Log; 値:"-ER|" & Get ( アプリケーションバージョン ) & "|スクリプト:lib_Test_login...|" & $MMpStatus & " から他のスクリプトで 「MMP+」が、利用されています。|" & MMPLib::gAccount & "/" & MMPLib::gServer]
現在のスクリプト終了 [結果: $Log]
End If
End If
#