TopMovable Typeカスタマイズ検索 > 2006年7月
2006年7月20日

Movable Type の検索でエラーになる問題について

July 20,2006 12:23 AM
Tag:[, ]
Permalink

Movable Type で検索を行っていると、下記のようなメッセージが表示されるケースがあります。

現在検索中です。検索が終わるまでお待ちください。

これは Movable Type の仕様で、連続した検索実行を抑止しているためです。3.31 の場合、デフォルトの抑止時間は20秒で設定されていますので、検索してから20秒以内に再検索を実行すると上記のメッセージに出会うことになります。3.2 では 60秒に設定されています。

とはいっても、Movable Type に精通されていない方は検索を何回も繰り返すでしょうし、このままではサイト運営者は「検索機能がおかしいですよ」というコメントを頂くことになりかねません。下記の変更を行い、サイトを訪問された方が戸惑わないようにすることを推奨します。

1.連続実行抑止時間を短縮する

1.1 Movable Type 3.3? の場合

mt-config.cgi に

ThrottleSeconds 10

という ThrottleSeconds を追加することで、連続実行抑止時間を変更でき、エラーメッセージが表示される確率を下げることができます。数字の単位は「秒」で、上記の例は10秒(=検索してから10秒以内に再検索されたらエラーにする)を設定しています。

ThrottleSeconds

Movable TypeはIPベースのコメント帯域制御の設定を使い、コメントを溢れさせる攻撃(1つのエントリーに多量のコメントを送り付けること)に対処しています。 ThrottleSecondsはサイトの閲覧者がコメントを投稿した後に、再投稿できない時間を秒数で指定します。 たとえば、アリスがある時刻にコメントを投稿したと仮定します。すると彼女は、その時刻からこの設定に指定されている秒数の間、同じIPアドレスから別のコメントを投稿することができなくなります。 あなたのブログに対しコメントを投稿する人が多くなければ、この設定を上げることができます。

ただしこの設定項目はコメントやトラックバックについても適用されますので、値を下げ過ぎると同一投稿者からのコメント重複投稿やスパム攻撃が増加する可能性があります。またサーバにも負荷がかかりますので注意しましょう。

1.2 Movable Type 3.2 の場合

3.31 では設定ファイルで値の変更が可能ですが、3.2 はプログラムを修正する必要があります。

lib/MT/App/Search.pm

をダウンロードし、下記のパッチをあてます。

--- lib/MT/App/Search.pm.bak    Thu Sep 22 13:00:26 2005
+++ lib/MT/App/Search.pm        Mon Jul 17 18:49:37 2006
@@ -36,7 +36,7 @@
         if ($DB) {
             my $ip = $app->remote_ip;
             if (my $time = $db{$ip}) {
-                if ($time > time - 60) {   ## Within the last minute.
+                if ($time > time - 10) {   ## Within the last minute.
                     return $app->error($app->translate(
                         "You are currently performing a search. Please wait until your search is completed."));
                 }

パッチが利用できない場合は下記の赤色部分 *1 を変更してください。

sub init {
    my $app = shift;
       :
      (略)
       :
    ## Check whether IP address has searched in the last
    ## minute which is still progressing. If so, block it.
    if (eval { require DB_File; 1 }) {
        my $file = File::Spec->catfile($cfg->TempDir, 'mt-throttle.db');
        my $DB = tie my %db, 'DB_File', $file;
        if ($DB) {
            my $ip = $app->remote_ip;
            if (my $time = $db{$ip}) {
                if ($time > time - 60) {   ## Within the last minute.
                    return $app->error($app->translate(
                        "You are currently performing a search. Please wait until your search is completed."));
                }
            }
       :
      (略)
       :

元の「60」は60秒のようです。これより少ない値に変更すればエラーに遭遇する確率が下がります。修正案は10秒にしていますが、必要に応じて値は適宜修正してください。
修正が終わったら元のディレクトリにアップロードしてください。

2.エラーメッセージを改善

冒頭のエラーメッセージを変更し、ユーザに対し再検索で待ち時間が必要であることを促します。
メッセージの修正方法は、Movable Type をインストールしたディレクトリから

lib/MT/L10N/ja.pm

をダウンロードし、任意のエディタで開いて下記の赤色部分を修正します。

       :
## lib/MT/App/Search.pm
'You are currently performing a search. Please wait until your search is completed.' => '現在検索中です。検索が終わるまでお待ちください。',
       :

例えば下記のように修正します。

'You are currently performing a search. Please wait until your search is completed.' => '再検索する時は×秒以上待ってから行ってください。',

修正したら元のディレクトリにアップロードして上書きしてください。1項の修正と併用しても良いでしょう。


*1:色覚障害等で色が識別できない場合は、サイト右上の「Styles」メニューにある Gray Scale をクリックしてください。IEではグレースケール表示され、青色部分が下線表示、赤色部分が二重下線で表示されます。Firefox/Opera ではカラー表示のままですが下線表示に切り替わります。なお設定の都合上、リンクとテキスト表示が判断できなくなりますので予めご容赦ください。

Comments [4] | Trackbacks [5]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3