January 28, 2004
MT…定期的に再構築する
エントリーのアクセスランキングを定期的に更新したい。
「定期的」に処理を行なうならcronを使えば良いだろうと考えていたが、問題はRebuildをどのように処理するか。最初は個々
*1
のRebuildに必要なパラメータを付けてmt.cgiを実行する方向で検討してみたものの付け焼き刃の知識ではなかなか上手く行かない。
MTのプラグインで何か対処出来ないかな…と探していて「mt-rebuild」(tima thinking outloud.:Timothy Appneさん)と出会った。これはプラグインではなく単独実行するスクリプトで、簡単な引数を渡すことで任意テンプレートの再構築をコマンドラインから実行出来る。このmt-rebuildをダウンロード後展開し、中身のmt-rebuild.plをMTのルートディレクトリに置く。パーミッションは700。
(mt home)/mt-rebuild.pl
コンソールから実行し、Webブラウザで観て正常に再構築されていることを確認する。
% ./mt-rebuild.pl -mode="index" -blog_id=8 -template="Popular Ranking"「-blog_id=」にはテンプレートの編集で適当なテンプレートの名前にマウスカーソルを合わせた時にブラウザ下部に表示される *2 blog_idを指定する。
% ./mt-rebuild.pl -mode="index" -blog_id=8 -template="Main Index"
「-template=」には再構築したいテンプレートの名前を指定する。
次はcronジョブへの登録だが、Webminを使うとGUIで実に簡単に出来る
*3
ので詳細は割愛。
Webminでのcronジョブ編集画面。実行ユーザ、実行するコマンドと引数、起動時間が簡単に設定出来、この画面から実行することで動作状況の確認も行なえる。写真の設定(毎時5分実行)は試験時のもので現在は毎時59分に再構築を実行している。
実際に実行しているシェル・スクリプト。MacOSXなので少々変則的なパスかも。
% cd /Library/WebServer/CGI-Executables/MT/こちらもパーミッションは700にする。% ./mt-rebuild.pl -mode="index" -blog_id=8 -template="Popular Ranking"
% ./mt-rebuild.pl -mode="index" -blog_id=8 -template="Main Index"
尚、mt-rebuild.plのオーナ、シェル・スクリプト(ここではmt-rebuild.sh)のオーナ、cronジョブ実行ユーザは全て同一にしておく。
*2 : 一般的なブラウザの場合
*3 : MacOSXにはCronniXというcronジョブ設定ツールもある。
非常に参考になりました。ありがとうございます。トラックバック送信が「500 read timeout」で失敗するため、コメントさせていただきました。
お役に立てて良かったです。
肝心のPlugin自体が公開されていないというのは知りませんでした。
説明ページは残っているので単にリンク間違いかリンクの変更忘れ
だと思いますが…気になりますね。
nbrianさんのブログにリンクが記されていましたので、早速当方の
エントリーでも紹介させて戴きました。
ところで、nbrianさんのエントリーは私が挫折したままになっている
天気情報表示ですね(^^ゞ
いつかはちゃんと動かすぞ…と思いつつ、優先度が低いためなかなか
先に進みません。
わかりやすい説明でとても参考になりました。
尚、私もnbrianさんと同様にTBに失敗してしまうので、失礼とは思いますがこのエントリーにリンクさせて頂きます。
お役に立てて何よりです。
トラックバックのエラーですが、SPAM対策で処理が重くなってしまい
タイムアウトが頻発しているようです。
トラックバック自体は行われていました。
#そろそろサーバ構成の見直しが必要かも(^^ゞ
