MovableType には cron
を使って指定した時刻に記事の投稿を予約する機能があります。……はずが、なんかうまくいかなかったので別の方法を探していたところ、便利なプラグインを発見。
ほぼ指定日投稿(MT5用) – The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2010/01/20-094755.php
たとえば、明日の午前 09:00 に投稿を予約しておくと、09:00 の 少し後の 訪問者の閲覧と同時に記事が公開されます。
記事の公開(再構築)は結構重い処理なので、訪問者があるたびに実行するのではなく、一度実行したら最低 15 分は間隔が空くようです(だから「少し後」)。
インストール
zip ファイルの中身を解凍。
$ cd mt $ unzip ~/RunPeriodicTasks_2_20.zip
実行権限を付加。これで完了。
$ cd mt $ cd plugins/RunPeriodicTasks $ chmod +x mt-run-periodic-tasks.cgi
FCGI 化
うちの MovableType は Fastcgi を使って稼働してます。ついでにこのスクリプトも fcgi 化。
$ cp mt-run-periodic-tasks.cgi mt-run-periodic-tasks.fcgi $ perl -i.bak -ple 's/(?<=mt-run-periodic-tasks\.)cgi/fcgi/' RunPeriodicTasks.pl
テンプレートの編集とプラグインの設定
記事の投稿処理を起こすためのタグをテンプレートに記述します。処理は非同期で行われますが、少しでも訪問者のじゃまにならないよう、テンプレートの最後(<body>
タグの直前)にタグを記述することが勧められています。
今回は ブログ記事、メインページ テンプレートに以下のタグを記述しました。
<div class="rebuild"><$mt:RunPeriodicTasksJS$></div>
このプラグインは jQuery を使って非同期にサーバーへのアクセスを行います。そのため、まだ jQuery を使っていない場合は、以下のタグを 上記タグより前に 挿入する必要があるでしょう。
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
次に、スタイルシート テンプレートを修正します。
/* rebuild indicator */ .rebuild { position: absolute; top: 0; right: 0; } .rebuild div { height: 10px; width: 10px; } .rebuild .executing { background-color: gold; } .rebuild .completed { background-color: orangered; } .rebuild .skipped { background-color: gray; }
最後に、プラグインの設定を行えば終了です。
<div class="executing"></div>
<div class="completed"></div>
<div class="skipped"></div>
使用例
上記のような設定を行うと、こんな風に、画面右上にインジケータが現れます。
実行中 | 成功! | スキップ |
---|---|---|
まとめ
cron
の設定無しで勝手にブログを投稿してくれるため大変便利ですが、訪問者があるたびにサーバーへのアクセスが一つ増えるわけですから負荷がかかることになります。大規模なブログでは導入しない方が良いでしょう。
また、jQuery が導入されていないと Ajax での非同期アクセスを行わず、サーバーアクセス中はずっとブラウザのインジケータが回り続けることになります。基本的に、jQuery がないと使えないプラグインと言っていいでしょう。