PowerCMS では、指定日投稿や迷惑コメント/トラックバックの削除、公開キュー等のスケジュールタスクを拡張しており、次のさまざまな方法でスケジュールタスクを実行できます。
- cron や Windows タスクスケジューラを利用した run-periodic-tasks スクリプトの実行
- ログフィードの取得時に実行
- XML-RPC API で拡張された mt.runPeriodicTasks の利用
run-periodic-tasks スクリプトの実行
run-periodic-tasks スクリプトを実行すると、指定日投稿などのスケジュールタスクと、公開キューによる再構築が行われます。お使いのサーバーにあわせた方法で定期的に run-periodic-tasks スクリプトが実行されるように設定してください。
$ cd /path/to/mt
$ perl ./tools/run-periodic-tasks
実行は PowerCMS のアプリケーションディレクトリから行ってください。
crontab を利用したスケジュールタスクの実行 (Linux または UNIX サーバーの場合)
crontab とは、Linux や UNIX サーバー上で定期的にコマンドやスクリプトを実行する cron デーモンの設定ファイルです。crontab に登録することで、定期的に実行することができます。たとえば、毎時0分、15分、30分、45分に実行する場合、次のように記述します。
0,15,30,45 * * * * cd /path/to/mt && perl ./tools/run-periodic-tasks
run-periodic-tasks の実行間隔は15分以上を推奨します。
実行は PowerCMS のアプリケーションディレクトリから行う必要があり、/path/to/mt の部分には新規インストールの事前準備で決定したアプリケーションディレクトリまでのパスを入力してください。
また、実行は apache や nginx などウェブサーバの実行ユーザが行うように設定してください。
cPanel を利用したスケジュールタスクの実行 (LinuxまたはUNIXサーバーの場合)
cPanel とは、ウェブベースのサーバー管理プログラムです。Command to run とラベルの付いたテキストボックスに、次のように記述します。
cd /path/to/mt && perl ./tools/run-periodic-tasks
/path/to/mt の部分には新規インストールの事前準備で決定したアプリケーションディレクトリまでのパスを入力します。
Windows のタスクスケジューラを利用したスケジュールタスクの実行
Windows サーバーで動作させている場合は、Windows のタスクスケジューラを利用します。主な設定項目は以下のとおりです。
「全般」タブ
スケジュールタスクの実行ユーザーや、サーバーへのログイン状態での実行の可否を設定します。
項目名 | 解説 | 設定例 |
---|---|---|
名前 | スケジュールタスクの名前を設定します。 | PowerCMS スケジュールタスク |
セキュリティオプション | 「タスクの実行時に使うユーザーアカウント」には、run-periodic-tasks スクリプトを実行するユーザーを指定します。ウェブサイトディレクトリには、ここで指定したユーザーで書き込めるように権限を設定する必要があります。Administrator など、お使いの環境に合わせて設定してください。 また、サーバーにログインしていないときも実行できるよう「ユーザーがログオンしているかどうかにかかわらず実行する」を選択します。 |
タスクの実行時に使うユーザーアカウント: Administrator ユーザーがログオンしているかどうかにかかわらず実行する |
「トリガー」タブ
スケジュールタスクの実行開始日時や、繰り返しの間隔を設定します。「新規」ボタンをクリックしてトリガーを作成してください。
項目名 | 解説 | 設定例 |
---|---|---|
タスクの開始 | スケジュールタスクの開始方法を設定します。 | スケジュールに従う |
設定 | スケジュールタスクの開始時刻と実行間隔を設定します。 | 毎日 開始: 2015/05/22 0:00:00 間隔: 1日 |
詳細設定 | 繰り返しの間隔などを設定します。間隔を短くするとサーバーへの負荷も高くなりますので、環境や目的にあわせて調整してください。 | 繰り返し間隔: 15分間 継続時間: 1日間 |
「操作」タブ
Perl インタープリタのパスや run-periodic-tasks スクリプトのパスを設定します。「新規」ボタンをクリックしてスケジュールタスクの実行内容を設定してください。
項目名 | 解説 | 設定例 |
---|---|---|
操作 | スケジュールタスクの開始時に実行する操作を設定します。 | プログラムの開始 |
プログラム/スクリプト | Perl インタープリタのパスおよびファイル名を指定します。 | C:\strawberry\perl\bin\perl.exe |
引数の追加 | アプリケーションディレクトリから run-periodic-tasks スクリプトまでの相対パスを指定します。 | tools\run-periodic-tasks |
開始 | アプリケーションディレクトリまでの絶対パスを指定します。 | C:\inetpub\app\mt |
run-periodic-tasks スクリプトはアプリケーションディレクトリに移動してから実行する必要があります。「引数の追加」および「開始」の設定を忘れずにおこなってください。
「条件」タブ
トリガーに加え、タスクを実行する条件を設定します。設定例ではデフォルトのまま変更していません。お使いの環境に合わせて設定してください。
項目名 | 解説 | 設定例 |
---|---|---|
「電源」など | トリガーに加え、タスクを実行する条件を設定します。 | デフォルトのまま変更なし |
「設定」タブ
スケジュールタスクの停止や多重実行に関する設定です。設定例では、多重実行を可能にするため、デフォルトの「新しいインスタンスを開始しない」から「新しいインスタンスを並列で実行」に変更しています。お使いの環境に合わせて設定してください。
項目名 | 解説 | 設定例 |
---|---|---|
タスクが既に実行中の場合に適用される規則 | 以前のスケジュールタスクがまだ実行中の状況での、現在のスケジュールタスクの扱いを設定します。サーバーへの負荷が高い場合には「既存インスタンスの停止」などの設定に変更してください。 | 新しいインスタンスを並列で実行 |
ログフィードの取得時に実行
通常、ログフィードを取得した際に、スケジュールタスクを実行します。ログフィードを取得してもスケジュールタスクを実行しないようにするには、環境設定ファイル mt-config.cgi に次の内容を追記してください。
ActivityFeedsRunTasks 0
XML-RPC API で拡張された mt.runPeriodicTasks の利用
PowerCMS 1.5 で拡張されたメソッドを利用することで、XML-RPC API 経由でスケジュールタスクを実行できます。