CORESERVERでWP-DBManagerを動かすために

起きたらなぜか三時だった。

二度寝しようにも目がさえて眠れないので、摩訶不思議な状態に陥いり前々から気持ち悪く思っていた問題を解決することにしてみました。

WordPress のプラグインのひとつに、データベース内のデータをバックアップ、 リストア、バックアップしたデータをメールで自動送信ができるというすばらしいプラグイン「WP-DBManager」というものがあるのですが、このサイトが動いている CORESERVER ではデフォルト状態だと設定後に手動でのバックアップはできても、肝心のメール配信機能で 0byte のファイルが送られてきてしまうという問題が発生します。

これはどうも「そんな処理できねーよ!」というサーバー側からの無言の抵抗のようで、このメール自動配信機能は cron として処理する部分である以上、CORESERVER で……というよりも XREA 系のサーバーで動かすには、PHP を CGI として動作させる必要がでてきてしまうようです。

別にそうすりゃいいじゃないというお話でもあるのですが、CORESERVER のサーバーヘルプに書かれている説明だと『モジュール版PHPに比べて、動作が遅くなる。負荷が掛かる。』とあり、重くなるんかよウゲゲーと感情的に嬉しくありません。早いほうがいいですよね!

ルートに「AddHandler application/x-httpd-phpcgi .php」と書いた .htaccess を置けば実に簡単に解決するのですが、これだと全体がそう処理されてしまうわけですから、前述の負荷云々で問題が出そうです。

かといって、CGI として動作させないことにはどうにもなりません。そこで今回、その被害(?)を最小限に食い止める方法をご紹介してみます。

方法はいたって簡単。WordPress のルートフォルダに .htaccess を設置もしくは追記してあげるだけ(たぶん mod_rewrite がらみのものがあるので、追記になるはず)!

<files wp-cron.php>
AddHandler application/x-httpd-phpcgi .php
</files>

要は WordPress の cron 部分を担当しているファイルだけを指定してやるだけです。ひとまずこれでメールの 0byte 問題は解決。負荷 pt なんかもそんなに上がらないんじゃないかなーと踏んでいます。

お困りのかたは是非どうぞ、と言いたいところですが、ぼくも今し方、書き換えたばかりのものなので他にやっぱり問題が出るかもしれないというところは、念頭に置いていてくれると助かります :-)

おっと、ちなみに CORESERVER の mysql と mysqldump のパスは


mysqldump : /usr/local/mysql/bin/mysqldump
mysql : /usr/local/mysql/bin/mysql


となります。

    • himajin
    • 2011年 1月 16日 7:19pm

    わぉ。まったく同じことで悩んでました。ググってみたらトップでヒット。そうか、wp-cronだけ指定でうまくいくんですね〜。試してみたところ、バッチリ動作しました! 情報ありがとうございました。

  1. mysqldump、mysqlのパスが書いてある。