Latest File Release

mail2weblog (1.3.9)2013-08-09 13:18

トピックス (Topics)

最近の更新 (Recent Changes)

2015-05-21
2015-05-13
2015-03-05
2014-10-03
2013-08-22

高度なカスタマイズ方法

システムの設定(version 1.2.0 ~)

1. 概要

conf/02_user/system.rb を編集することで、以下のような制御ができます。

  • システムに動作制限時間を設け、動作制限時間を過ぎた場合は、途中までのメールで処理を中断させる。
  • 動作制限時間中はシステムを終了させずに、連続してメールの処理を行わせる。
  • 排他制御によりシステムの重複動作を防ぐ。

標準では、排他制御のみ有効になっています。


2. 動作制限時間の設定

環境によってはプロセスに処理時間が設けられていることがあります。

一度にたくさんのメールが届けば、処理するメールが増え、当然プロセスの処理時間は長くなります。

その場合、ブログ記事の投稿途中で処理が中断してしまうかもしれません。

例えば以下のような例が考えられます。

  • ブログ記事の投稿は済んだが…。
    • まだ添付ファイルの転送が済んでない。
    • 書式プラグインが未適用の記事が投稿されてしまう。
    • カテゴリの指定が済んでいない。

動作制限時間の設定を行うことで、この問題を回避できます。

動作制限時間は、最後に受信したメールを処理できるだけの余裕を持って設定してください。

動作制限時間を設定するには、以下の行を書き換えます。

# 動作制限時間を指定してください。
# 指定した時間までに届いたメールを最後に処理を中断します。
# 単位は秒です。
# -1 を指定した場合は、動作制限時間を設けません。
M2W_SYSTEM_PROCESSING_TIME = -1

コメントにある通り、単位は秒です。従って、動作制限時間を 4 分に設定する場合は 4分 × 60秒/分 = 240秒 なので以下のように設定します。

M2W_SYSTEM_PROCESSING_TIME = 240

3. 連続処理の設定

デフォルトではメールの走査は1度だけですが、連続処理の設定をすることで動作制限時間中、連続してメールの処理を行わせることができます。

連続処理の設定をすることで何も処理されない空白の期間を埋めることが可能になります。

ただし、場合によってはプロセスの重複実行が起こりうるので、排他制御を有効にすることを推奨します。ちなみに排他制御は、標準で有効になっています。

連続処理を設定するには、以下の行を書き換えます。

# 動作制限時間まで繰り返し処理を行うかどうかを指定してください。
# 繰り返し処理を行う場合は true を、そうでない場合は false を指定してください。
# ただし、動作制限時間を設けなかった場合(-1 の場合)は、
# 永久動作してしまうため M2W_SYSTEM_CONTINOUS_PROCESSING = true を設定しても
# 繰り返し処理は実施しません。
M2W_SYSTEM_CONTINOUS_PROCESSING = false

# 繰り返しメール受信を行う間に挟むスリープ時間を指定してください。
# この指定は、繰り返し処理が有効の場合のみ有効です。
# 単位は秒です。
# -1 を指定した場合は、スリープを挟みません。
M2W_SYSTEM_MAIL_RECEIVER_SLEEPING_TIME = -1

連続処理を行うには、2つの定数を設定します。

  • 連続処理の実施有無
  • メール受信間のスリープ時間

メール受信間のスリープ時間は、動作制限時間と同じく単位は秒です。メールサーバへの負荷を考えて 10 秒程度を指定することを推奨します。

設定例を以下に示します。

M2W_SYSTEM_CONTINOUS_PROCESSING = true
M2W_SYSTEM_MAIL_RECEIVER_SLEEPING_TIME = 10

4. 排他制御の設定

プロセスが重複動作した場合、メールの重複受信により重複したブログ記事投稿が行われてしまう場合があります。

排他制御を有効にすることで、このような問題を回避できます。排他制御は、標準で有効になっています。

排他制御を設定するには、以下の行を書き換えます。よほどの理由がない限り、排他制御は有効にしておいてください。

# 排他制御を行う場合は、ロックに利用するファイル名を指定してください。
# 排他制御を行わない場合は、nil を指定してください。
M2W_SYSTEM_LOCKFILE = 'm2w.loc'

排他制御を無効にする場合は、以下のように設定します。

M2W_SYSTEM_LOCKFILE = nil

5. 通信タイムアウト時間の設定

ブログシステムの応答に時間が掛かる場合、通信タイムアウトによって投稿がうまくいかない場合があります。

通信タイムアウト時間の標準値は 30 秒ですが、うまくいかない場合は通信タイムアウトの時間を増やしてください。

通信タイムアウト時間を設定するには、以下の行を書き換えます。

# 通信のタイムアウト時間を指定して下さい。
# 単位は秒です。
# nil を指定した場合、処理系の標準値を使います。
M2W_SYSTEM_COMMUNICATION_TIMEOUT = nil

通信タイムアウト時間を 120 秒(2 分)に設定する場合は、以下のように設定します。

M2W_SYSTEM_COMMUNICATION_TIMEOUT = 120