Ktai Entry MUでcron設定
-
プラグイン作者です。
retrieve.php を cron で呼ぶ方式の場合、MU での複数ブログの判定ができないのは、今のところ仕様です。inject.php を使う方式も同様です。
ブラウザーで各ウェブログを閲覧したのをトリガーにメール投稿させる場合は、MU のコア機能によって、閲覧中の URL から「どのブログが対象か」を判別できます。しかし cron で retrieve.php を呼んでしまうと、どのブログか判定できないため、MU の仕組み上、メインブログが対象となってしまいます。
# MU で、wp-mail.php の設定が殺されているのも、同様の理由だと思います。
将来のバージョンでは、retrieve.php を cron で呼んだり、inject.php を実行するときに、ブログを指定できるよう検討しています。単純に blog_id を引数で指定するとか、どういう実装方法がよいのか悩んでいますが……。
今すぐできる対応としては、retrieve.php をブログごとに複製して、wp-load.php を呼ぶ直前で、それぞれのブログに対応した $_SERVER[‘HTTP_HOST’], $_SERVER[‘REQUEST_URI’] をハードコードで定義してやる方法でしょう。そうすると、MU 自体がブログを振り分けてくれるはずです。
今すぐできる対応としては、retrieve.php をブログごとに複製して、wp-load.php を呼ぶ直前で、それぞれのブログに対応した $_SERVER[‘HTTP_HOST’], $_SERVER[‘REQUEST_URI’] をハードコードで定義してやる方法でしょう。そうすると、MU 自体がブログを振り分けてくれるはずです。
私は素人なので、できれば、もっと具体的に書いていただけませんか…
今は
http://ja.forums.wordpress.org/topic/523
に書いてある
<link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php” type=”text/css” />
を書いていちいちブラウザを開いてる状態です今すぐできる対応としては、retrieve.php をブログごとに複製して、wp-load.php を呼ぶ直前で、それぞれのブログに対応した $_SERVER[‘HTTP_HOST’], $_SERVER[‘REQUEST_URI’] をハードコードで定義してやる方法でしょう。そうすると、MU 自体がブログを振り分けてくれるはずです。
私は素人なので、できれば、もっと具体的に書いていただけませんか…
上記の記述が分からなければ、この方法はあきらめた方が無難です。
これはかなりトリッキーで、かつ、うまく動作するか確認が取れていない手法です。したがって「よく分からない」人が試すには不適切なのです。「この文面で分かる」人のみが対象です。見なかったことにしてください 😉
なお、cron は設定如何ではトラブルの元ですので、あまり意味が分からないならば、使わないほうがよいです。Ktai Entry は、特に cron を使わなくても自動的にメール投稿の処理がされるようになっています。cron は、即時性を高めるためだけの作用であり、必須ではありません。
&t;link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php” type=”text/css” />
を書いていちいちブラウザを開いてる状態ですだとすると、このスタイルシート URL (これはブログごとに違います) を wget 等のコマンドで呼ぶような cron を設定してみてください。
# これぐらいはちょっと調べたら分かると思いますので、ぜひともチャレンジしてみてください。
親切な対応ありがとうございます
Ktai Entry は、特に cron を使わなくても自動的にメール投稿の処理がされるようになっています。cron は、即時性を高めるためだけの作用であり、必須ではありません。
即時性が必要なのですが、メール投稿の処理はページを見ないと発動しないですよね?
ページを見なくても定期自動では無理でしょうか即時性が必要なのですが、メール投稿の処理はページを見ないと発動しないですよね?
ページを見なくても定期自動では無理でしょうかうーん。だとすると、cron で wget とか curl コマンドを起動させて、http://example.com/wp-content/plugins/ktai_entry/retrieve.php を閲覧する、という仕掛けを実行させる手になりますね。retrieve.php をそのまま PHP スクリプトとして起動させると、複数ブログ対応にはなりませんが、ブログごとに異なるスタイルシート URL としての retrieve.php (これはブログごとにどんな URL になるか確認してみてください) ならば、cron で呼んでも複数ブログ対応になります。
お使いのサーバーに wget ないし curl が入っていることが必要ですので、それは調べてみてください。
<link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php” type=”text/css” />
↑複数書いてあるxxx.htmlをcronで*/5 * * * * wget http://URL/xxx.html
としてみましたがダメでした、、、
<link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php” type=”text/css” />
↑複数書いてあるxxx.htmlをcronでretieive.php そのものを wget してください。wget は、HTML に書かれているスタイルシートまでは読み込まない *はず* です (オプションを付ければ解釈するかもしれませんが)。
この、rel 属性に書かれた、retrieve.php を含む URL はブログごとに違いますので、それぞれの URL を確認して、wget で読み込めば、所望の動作になると思います。もう一度試してみてください。
*/5 * * * * wget http://example.com/XXX/wp-content/plugins/ktai_entry/retrieve.php
を試してみましたがダメでした。*/5 * * * * wget http://example.com/XXX/wp-content/plugins/ktai_entry/retrieve.php
を試してみましたがダメでした。うーん。ダメでしたか……。
では、その個別の URL をウェブブラウザーでアクセスしてみるとどう表示されますか?
POP アクセス自体がエラーになっていると Bad Gateway エラーになりますが、そのような状態ではありませんか?Gmail は、あまり頻繁にアクセスするとロックされてしまうようです。なので、Ktai Entry デフォルトの「15分間隔」より短かい間隔にするのはおすすめしません。
では、その個別の URL をウェブブラウザーでアクセスしてみるとどう表示されますか?
メール投稿の
すぐにメッセージを読み出す。
と同じ表示になります厳しい状況です
メール投稿の
すぐにメッセージを読み出す。
と同じ表示になりますこれは正常に動作しているのではないですか?
“There doesn’t seem to be any new mail.” すなわち、サーバーにメールがないという表示ですよね?サーバーにメールがあるはずなのにこの表示になるとしたら、それはメールサーバーの問題であって Ktai Entry の問題ではありません。
Gmail は、一度 POP でチェックしてしまうと、2回目は「既読」判定になるので上記のような表示になると思われます。
これは正常に動作しているのではないですか?
ええ、正常動作してます、しかし、やりたいことはローカル手動でチェックするのではなく、
サーバー上で自動定期チェックをやりたいのですゆっくりではありますが、問題の切り分けは進んでいますよ。お互い、もうちょっとがんばりましょう。
しかし、やりたいことはローカル手動でチェックするのではなく、
サーバー上で自動定期チェックをやりたいのですええと、「正常動作している」ということは、この URL へのアクセスが OK だということです。
手動で、http://example.com/XXX/wp-content/plugins/ktai_entry/retrieve.php にアクセスしたら There doesn’t seem to be any new mail が出るとしたら、この URL へのアクセスでメールの投稿が可能であることが確認できたわけです。ということは、wget でこの URL に定期アクセスさせれば、自動的にメール投稿がされるはずです。
しかし、それがうまくいかないということは、crontab の書き方がまずいのか、cron の実行間隔が制限されている (5分間隔ではダメ etc) のか、cron を使うには何か申請が必要なのか、そもそもサーバーでの cron 実行が許されていないのか、何か cron にまつわる理由が考えられます。
これを確認するには、もっと単純な cron ジョブを作ってみてください。自分宛にメールを送るとか、秘密のページにアクセスカウンターをつけて、そこを定期アクセスしてカウンターが期待通りにアップしていることを見るとか。
さすがに、cron 関連の動作については、利用しているサーバー固有の問題となりますので、このフォーラムでは解決できません。利用している ISP やサービス名を書いてもらえれば、同じサービスを使っている人のヒントがあるかもしれませんが、むしろ、サポートに質問するか、サーバーのマニュアルを熟読するかしてみてください。
- トピック「Ktai Entry MUでcron設定」には新たに返信することはできません。