wp-cron で定期実行

Twitter / みなみ: @wokamoto WP 2.7 にしたら、ついに ...みなみさんが WP 2.7 にしたら、wp-shot が動作しなくなったとのことなので、多少修正して WP 2.7 でも動作するようにしてみました。
どうやら wp-shot で、定期チェックに使っている Pseudo-cron.php が WP 2.7 では、正常に動作しないっぽい。
そんなわけで Pseudo-cron.php をバッサリ切り捨てて、WordPress 2.1 からある標準機能 wp-cron を使用することにしました。
ついでに、今までのバージョンだと http://example.com/wp-content/wp-plugins/wp-shot/wp-shot.php に直接アクセスすると、メールチェックが動作していたので、これも動作しないようにしました。
しかし、人のソースを読むのは勉強になるなぁ。

で、その際に wp-cron についてアレコレ試してみたので自分用にメモ。

wp-cron を使って定期的に一定の処理を行うには以下のように記述すればよい。

define('CRON_SCHEDULE_HANDLER', 'hogehoge');

// wp-cron で実行させたい処理
function cron_schedule_handler() {
	// ここに実際の処理を記述

	// 指定時間後に再度起動
	$time_interval = 10 * 60;
	wp_schedule_single_event(time() + $time_interval, CRON_SCHEDULE_HANDLER);
}

// wp-cron でスケジュールされていなければ、スケジュール登録
$crons = _get_cron_array();
$enabled = false;
foreach ( $crons as $time => $tasks ) {
	foreach ( $tasks as $procname => $task ) {
		if ($procname === CRON_SCHEDULE_HANDLER) {
			$enabled = true; break;
		}
	}
	if ($enabled) break;
}
if (!$enabled)
	wp_schedule_single_event(time(), CRON_SCHEDULE_HANDLER);
unset($tasks); unset($crons);

// スケジュール実行
add_action(CRON_SCHEDULE_HANDLER, 'cron_schedule_handler');

ちなみに wp-cron に登録されているジョブの一覧は、以下のプラグインで確認できます。

wp-cron の動作原理については hiromasa さんのエントリが詳しいです。

6 thoughts on “wp-cron で定期実行

  1. ゆりこ

    なんかこのシンプル感がステキなのです。

    どのへんがそうお感じでしょうか? wp-shot は設定画面がゴチャゴチャしている印象があるんですが……。Ktai Entry は、機能豊富ですが設定のしやすさ、とっつきやすさは wp-shot (や他のツール) よりも上だと自負しています。

    返信
  2. ゆりこ

    彼女のところのサーバが PHP5 に移行できれば、お役御免になることでしょう。

    正直なところ、2008年も暮れつつある現在では「PHP5 が使えない」という時点で、サーバーをよそに移った方がいいんですよね。いろいろ事情はあるでしょうが、いまどき PHP4 のままなんて……。

    返信
  3. をかもと 投稿作成者

    ゆりこさん、どもです。

    wp-shot はすでに開発が停止していて、他にも不具合がいっぱいあることが分かっています。なので、現在では「サーバーの PHP を 5.0 以降に変更して Ktai Entry に移行する」のが正しいと思われます 😉

    私は、このプラグインは使用していないので(と言うか、ケータイにカメラも付いてないので必要ない 😳 )完全にみなみさん専用です。
    彼女のところのサーバが PHP5 に移行できれば、お役御免になることでしょう。

    返信
  4. ゆりこ

    実は Pseudo-cron.php は、WordPress 2.6 以前でもサイトによっては反応がないという問題がありました。WordPress 2.7 特有の問題じゃない可能性があります。wp-shot はすでに開発が停止していて、他にも不具合がいっぱいあることが分かっています。なので、現在では「サーバーの PHP を 5.0 以降に変更して Ktai Entry に移行する」のが正しいと思われます 😉

    どうしても PHP5 にできないなら、norida さんの MobG がよいと思います。設計思想がだいぶ違うので、使い勝手が変わってしまいますが。

    返信
  5. ピンバック: M’s Life 2 » いまばりタオル

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください