MovableType Background Rebuilder Plugin(2).
公開日 : 2007-01-03 16:47:02
何人かの方が試してくださったようで、正常に動いたとの報告をもらえた。
ただ、再構築の結果を一切フィードバックしないので「正常に動いてる...っぽい? らしい。」という反応がほとんど。
ということで、再構築結果のフィードバックを受け取るようにしてみた。
Bootstrap AppでMTのAPIを利用したCGIを別に作り(MT本体だと負荷がかかりそうなので本末転倒じゃないかと...)再構築結果画面が表示された段階でAjaxというか、JavaScriptでCGIに非同期アクセスを定期的に試み、実行ログができていたらそいつを返す、という感じで。
せっかくなので再構築にかかった時間も表示するようにしてみた。
1/5追記:IE6/7で確認済み
※Firefox1.5、Safari 2.0で動作確認済み。
(IEで確認していないのが何ともですが、正常に動いたらどなたか教えてください...)
『メイン・メニュー > プラグイン > Background Rebuilder > 設定を表示』で以下の設定が行えるようになっている。
- 再構築の実行結果を取得する
このチェックを入れない場合、再構築の実行結果を表示しない。 - 実行結果の取得間隔(ミリ秒)
再構築の実行結果を取得するプログラムを何ミリ秒単位で取得しにいくかを数字で設定する。
デフォルト値は1000(1秒)。
この場合、1秒おきに/plugins/BackgroundRebuild/BackgroundRebuild.cgiへアクセスし、実行結果の取得を試みる。 - 実行結果の取得回数
再構築の実行結果を取得するプログラムの実行回数を指定する。
デフォルト値は180回。
この場合(実行結果の取得間隔が「1000」の場合)、1秒おきにMax3分まで再構築実行結果の取得を試みることになる。 - すべてを再構築時の実行待ち秒
「すべてのブログを再構築」ボタンをクリックした時、プログラムはブログ単位で順番に再構築プロセスを走らせるようになっているが、次のブログの再構築プロセスを走らせる前に待ち時間(秒)を設けることをできるようにした。デフォルト値は0秒。
設定値については、かなりサーバー環境によって変える必要があるのではないかと思う。前のエントリにも書いたが、
- 1GBのメモリを積んだMacBookにMAMPのApache+SQLite+MT3.3-jaの組み合わせ。
- Blogを5つ、各Blogのテンプレートはデフォルト状態。
- 以下のようなスクリプトで各ブログに300のエントリを作成してテストを実施。
my $mt = MT->new(Config => 'mt-config.cgi'); use MT::Entry; for (1..300) { my $entry = MT::Entry->new; $entry->blog_id($blog_id); $entry->author_id(1); $entry->status(2); $entry->title('TestWeblog_entry_'.$_); $entry->basename($_); $entry->save or die $entry->errstr; }
この時、デフォルトの状態で「すべてのブログを再構築する」をクリックして再構築した場合、各ブログの再構築時間は14〜15秒。
『すべてを再構築時の実行待ち秒』を5秒程度に設定した場合、各ブログの再構築時間は4秒前後という結果に。
但し、『すべてを再構築時の実行待ち秒』を設定した場合、CGIの方でその時間待たされるし、デフォルト設定の場合は各ブログの再構築が並行して行われることになるので体感速度的にはデフォルト設定の方が早い。
それでもこの設定項目を設けたのは、『各ブログの再構築を並行して行う』っていうのが、やはり負荷的にどうかということが気になったから。
このあたりはやはりデータを集めないと最適な値は決められないような気もするので、もし導入された方いらっしゃいましたらフィードバックいただけると幸いです。
尚、本バージョンからライセンスを『クリエイティブ・コモンズ・ライセンス(表示-非営利-継承 2.5)』としました。