Ramdom Entry Pickup
- Microsoft、パケット情報の解析ツール「Microsoft Network Monitor 3」を無償公開 (2007年02月24日)
- クランプメーターを買った (2005年10月30日)
- 「ナイトライダー」が現実に?? (2005年01月18日)
- スパルタンなPCケース (2005年10月17日)
- 病は巡る (2006年11月21日)
« PerlのCPANインストール済モジュールの確認 | メイン | 夫婦は「ココロ」の鏡である(BlogPet) »
新規エントリー投稿時やコメント、トラックバック時に、
インデックステンプレートの「再構築オプション」にチェックがある場合、
その都度再構築されます。
PHPでモジュール化しているとはいえ、インデックステンプレートの数が多いので、
いかんせん時間がかかる。。。
ということで見つけたのがこれ↓
【 mt-rebuild 】
これは、MTの管理画面からではなく、
コンソールから手動、
もしくは「cron」で定期的に指定のテンプレートを再構築してくれる。
では、導入方法をば。。
まず、下記のURLから、「mt-rebuild」をダウンロードして、解凍する。
『 Code > Appnel Internet Solutions 』
解凍してできた、「mt-rebuild.pl」を、MTのCGIパスへアップロードする。
ファイルのパーミッションを「700」に変更。
まずは、コンソールから試してみよう。
例えば、「BlogPeople」というインデックステンプレートがあったとすると、
青字には、そのブログのブログIDを、
赤字の部分には、「テンプレート名」を入れてください。
あくまでも「テンプレート名」です。
「出力ファイル名」ではないですよ!
なお、テンプレート名には日本語(2byteコード)を使うこともできるみたいです。
コンソールでうまく再構築できたら、
「cron」にしこんでみましょう。
この場合、「Category-module」というインデックステンプレートが、1日1回、4時に再構築されます。
私の場合、相当数をこの定期的な再構築にしています。
例えば、カテゴリーリスト表示などは、
カテゴリーをそんな頻繁に増やしたりしませんし、カテゴリー毎のエントリー数なんて、
読者は気にしません(笑)
カテゴリーを増減したときだけ、手動で再構築すればいいんです(^^;)
月別アーカイブリストもなども同様です。
と、このように、いろいろなインデックステンプレートを自動で再構築するようにしています。
忘れてはいけないのが、そういう設定にしたインデックステンプレートは、
再構築オプションのチェックをはずしておいてくださいね。
が。。。なぜか、「MT-Notifier」プラグインを入れていると、うまく動かないという。。。なぜ!?

GentooLinux,Cygwinに
初心者には敷居が高いです
Linux初心者にはお勧めです
最初の第一歩を手助けしてくれます
Linux最強入門書!Link HTML:
トラックバックURL:
» cronでどんなことができるのか。 from
無料ブログアフィリエイトで日給8万円
» WindowsでCron(クローン) from
ネットビジネス用CGI Perl HTML Javascriptの情報サイト
コメント
TB ありがとうございました。
うちでは、MT-Notifierも動かしていますが、(たぶん)どちらも正常に動いていますよ。
Posted by: もぐらくん | 2006年1月 7日 12:03
>もぐらくん さん
そうなんですか?
どうやら「MT-Notifier」がバージョンアップしたみたいなので、
それでちょっと試してみます。
Posted by: showBOO
|
2006年1月 7日 12:58
MTのアップデートが面倒で、まだ3.17-jaを使っていますし、MT-Notifierも2.4.3です。
ですから、あんまり参考になりませんね。ゴメンナサイ。(^^ゞ
BlogPetRingにも登録させてもらいました。今後ともよろしくお願いします。
Posted by: もぐらくん | 2006年1月 7日 18:48
>もぐらくん さん
どうやらうまくいきました。。。(^^;)
「MT-Notifier」のバージョンのせいなにか、
テンプレートのせいなのかわかりませんが、
原因は不明です(^^;)
Posted by: showBOO
|
2006年1月 8日 09:08
始めまして近藤です。
とても有益な情報ありがとうございます。
ひとつ質問させてください。
例えば50ぐらいのブログのメインページだけ一括更新とかできるのでしょうか?
ブログの数が多すぎて一括更新したらサーバーに負荷がかかりそうなきもするのですが。
もしご存知であればアドバイスいただけないでしょうか?
よろしくお願いいたします。
近藤
Posted by: Anonymous | 2006年4月14日 20:49
>近藤さん
コメントありがとうございます。
リビルドのプロセスと、データベースがどのような相関関係になっているかは、
実は私もはっきり理解しているわけではないんです(^^;)
メインページのテンプレートの作りにもよりますが、
同時に50もあるブログのメインページをリビルドするとなると、相当な負荷かと思います。
たとえば、スクリプト等でBlogIDをインクリメントしていく方が堅実なような気がします。
Posted by: showBOO
|
2006年4月15日 11:31
回答ありがとうございます。
>たとえば、スクリプト等でBlogIDをインクリメントしていく方が堅実なような気がします。
私はプログラムなどの知識がなく、この部分が少しわからないのですが、
噛み砕いて教えていただけませんでしょうか?
一応今は-allでやっているのですが、結構サーバーに負荷がかかっていると思います。一応再構築はできるのですが。
Posted by: 近藤 | 2006年4月16日 16:04
>近藤さん
近藤さんがどれだけのものを管理されているのか存じませんが、
# /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1
となっている部分のBlogIDの値を、
必要な分だけ、一つずつ増やしていきながらリビルドしていけばいいかと思います。
この場合、blog_idが連番になっている必要がありますが。。。
例えば、1~50のブログであれば、
#!/bin/sh
count=1
while [ $count -le 50 ];
do
/(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=$count;
done
というシェルスクリプトを作り、
それをcronで動かすとか。
答えになってます?(^^;)
Posted by: showBOO
|
2006年4月17日 12:07
出張に出ていたためお返事が遅れました。丁寧なお返事ありがとうございます。
>近藤さんがどれだけのものを管理されているのか存じませんが、
大体ひとつのMTが200ブログを超えています。
プログラムの知識は全くない私ですが、200を一気に再構築したらまずいということは想像が付きます^^。
># /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1
>となっている部分のBlogIDの値を、
必要な分だけ、一つずつ増やしていきながらリビルドしていけばいいかと思います。
200ならこれはちょっと難しいですよね^^。
>例えば、1~50のブログであれば、
#!/bin/sh
count=1
while [ $count -le 50 ];
do
/(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=$count;
done
>というシェルスクリプトを作り、
それをcronで動かすとか。
これがいけそうです!ありがとうございます。
このプログラムは指定した時間になればID番号1~50のブログを再構築するというプログラムになるんでしょうか?
ということは200なら数時間づつずらして4回やれば負荷の問題など解決できることですよね。
とりあえず少しシェルスクリプトというやつを勉強してみます。
何度もありがとうございます。
近藤
Posted by: 近藤 | 2006年4月19日 20:05
>近藤さん
>大体ひとつのMTが200ブログを超えています。
200ですか(^^;)
す、すごいですね。。。
>このプログラムは指定した時間になればID番号1~50のブログを再構築するというプログラムになるんでしょうか?
これは1~50だった場合で、
これを1~200にしてもかまいませんよ。
まぁ、インデックスだけの再構築ということであれば、
深夜帯とかだったら、一気に200ブログ分やってもかまわないと思いますが(^^;)
Posted by: showBOO
|
2006年4月19日 22:04
たびたび恐れ入ります。近藤です。
早速やってみたのですが再構築されていません。
#!/bin/sh
count=1
while [ $count -le 5 ];
do
/(MTへのフルパス)/mt-rebuild.pl -mode=all -blog_id=$count;
done
という感じでとりあえず5個やってみようと思ったのですが、うまく再構築されませんでした。
一応indexだけではなく全部のページを更新したいのでallを使ったのですが。。。
少し教えて欲しいのですが、count=1の1というのはID1番のことではなく1づつ繰り返せという意味ですよね?
いろいろ検索で調べて回っていたら教えてくださったプログラムはカウント5まで繰り返せということだと思うのですが、
http://cyberam.dip.jp/linux_command/shellscript/shellscript_main.html
なぜ動かないのでしょうか?ちなみにブログID1は削除したので2からでした。
そんなことは関係ないですかね^^。
わかる範囲で構いませんので教えていただけませんでしょうか?
近藤
Posted by: Anonymous | 2006年4月20日 05:10
>近藤さん
おそらく、
-template=”BlogPeople” 等で、
テンプレート名を指定しないといけないような気がします(^^;)
やりたいのは、結局は、
blog_idに数値を入れて再構築し、
次にblog_idを1増やして再構築する。
という繰り返しになります。
#!/bin/sh
count=1
while [ $count -le 5 ];
do
/(フルパス)/mt-rebuild.pl -mode=all -blog_id=count
count=`expr $count + 1`
done
上記ではどうですか??
それと、
・どのようにして再構築できていないのか?
・ログにはどのように出力されているか
等々、必要な情報をお願いします。
こちらも手探り状態ではなんともお答えしようがないです。。。。
Posted by: showBOO
|
2006年4月20日 18:24
ありがとうございます。近藤です。
実は昨日サーバーをとめられました(汗)
どうやらcronを1分に設定したまま寝てしまっていたためです。サーバーを駆りなおして再度検証します。
また訪問させていただきますので少しお待ちいただければと思います。
せっかくアドバイスを下さったのにすいません。
近藤
Posted by: 近藤 | 2006年4月21日 06:14
>近藤 さん
了解です。
Posted by: showBOO
|
2006年4月21日 11:47
showbooさん、はじめまして。
添田と申します。
MovableTypeに関する記事を、
読み漁らせていただいています^^
ほんと有益な情報ありがとうございます。
僕も近藤さんと同じようなことをしたいと思っていて、上記のやりとりを見て、やってみました。
しかし、うまくいきません。
rebuild.shという以下のスクリプトをCRONで実行させたのですが、
(ID2と3のブログを再構築)
#!/bin/sh
count=2
while [ $count -le 3 ];
do
/(フルパス)/mt-rebuild.pl -mode=all -blog_id=$count
count=`expr $count + 1`
done
CRONDaemonからこんなメールが届きました。
/MTのフルパス/rebuild.sh: line 6: ¡¡/MTのフルパス/mt-rebuild.pl: No such file or directory
/MTのフルパス/rebuild.sh: line 6: ¡¡/MTのフルパス/mt-rebuild.pl: No such file or directory
mt-rebuild.plのパーミッションは700です。
ディレクトリもファイル名も間違っていません。
もし、原因がわかりましたら教えていただけないでしょうか?
Posted by: 添田 | 2006年12月 3日 00:21
>添田さん
ためしに「mt-rebuild.pl」のパーミッションを「755」にしてみてもらえますか?
cronの実行ユーザーが異なっているかもしれません。
Posted by: showBOO
|
2006年12月 3日 00:45
showbooさん、添田です。
シェルスクリプトのパーミッションが644になっていたため、700に変更したところうまくいきました。
お聞きするまでもないことで、お手数をおかけして申し訳ありませんでしたm(__)m
有益な情報ありがとうございました。
Posted by: 添田 | 2006年12月 4日 00:18
>添田さん
なるほど。
参考になれば幸いです(^^;)
Posted by: showBOO
|
2006年12月 4日 22:59