サポート » プラグイン » Ktai Entry MUでcron設定

  • 解決済 shiro99

    (@shiro99)


    各blogのretrieve.phpを定期実行したいのですが

    */5 * * * * /usr/local/bin/php /home/*****/wp-content/plugins/ktai_entry/retrieve.php

    だとルートブログのみとなって各ブログの自動更新ができないみたいです

    よろしくお願いします

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    プラグイン作者です。

    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 自体がブログを振り分けてくれるはずです。

    トピック投稿者 shiro99

    (@shiro99)

    今すぐできる対応としては、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&#8221; type=”text/css” />
    を書いていちいちブラウザを開いてる状態です

    モデレーター IKEDA Yuriko

    (@lilyfan)

    今すぐできる対応としては、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&#8221; type=”text/css” />
    を書いていちいちブラウザを開いてる状態です

    だとすると、このスタイルシート URL (これはブログごとに違います) を wget 等のコマンドで呼ぶような cron を設定してみてください。

    # これぐらいはちょっと調べたら分かると思いますので、ぜひともチャレンジしてみてください。

    トピック投稿者 shiro99

    (@shiro99)

    親切な対応ありがとうございます

    Ktai Entry は、特に cron を使わなくても自動的にメール投稿の処理がされるようになっています。cron は、即時性を高めるためだけの作用であり、必須ではありません。

    即時性が必要なのですが、メール投稿の処理はページを見ないと発動しないですよね?
    ページを見なくても定期自動では無理でしょうか

    モデレーター IKEDA Yuriko

    (@lilyfan)

    即時性が必要なのですが、メール投稿の処理はページを見ないと発動しないですよね?
    ページを見なくても定期自動では無理でしょうか

    うーん。だとすると、cron で wget とか curl コマンドを起動させて、http://example.com/wp-content/plugins/ktai_entry/retrieve.php を閲覧する、という仕掛けを実行させる手になりますね。retrieve.php をそのまま PHP スクリプトとして起動させると、複数ブログ対応にはなりませんが、ブログごとに異なるスタイルシート URL としての retrieve.php (これはブログごとにどんな URL になるか確認してみてください) ならば、cron で呼んでも複数ブログ対応になります。

    お使いのサーバーに wget ないし curl が入っていることが必要ですので、それは調べてみてください。

    トピック投稿者 shiro99

    (@shiro99)

    <link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php&#8221; type=”text/css” />
    ↑複数書いてあるxxx.htmlをcronで

    */5 * * * * wget http://URL/xxx.html

    としてみましたがダメでした、、、

    モデレーター IKEDA Yuriko

    (@lilyfan)

    <link rel=”stylesheet” href=”http://example.com/wp-content/plugins/ktai_entry/retrieve.php&#8221; type=”text/css” />
    ↑複数書いてあるxxx.htmlをcronで

    retieive.php そのものを wget してください。wget は、HTML に書かれているスタイルシートまでは読み込まない *はず* です (オプションを付ければ解釈するかもしれませんが)。

    この、rel 属性に書かれた、retrieve.php を含む URL はブログごとに違いますので、それぞれの URL を確認して、wget で読み込めば、所望の動作になると思います。もう一度試してみてください。

    トピック投稿者 shiro99

    (@shiro99)

    */5 * * * * wget http://example.com/XXX/wp-content/plugins/ktai_entry/retrieve.php
    を試してみましたがダメでした。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    */5 * * * * wget http://example.com/XXX/wp-content/plugins/ktai_entry/retrieve.php
    を試してみましたがダメでした。

    うーん。ダメでしたか……。

    では、その個別の URL をウェブブラウザーでアクセスしてみるとどう表示されますか?
    POP アクセス自体がエラーになっていると Bad Gateway エラーになりますが、そのような状態ではありませんか?

    Gmail は、あまり頻繁にアクセスするとロックされてしまうようです。なので、Ktai Entry デフォルトの「15分間隔」より短かい間隔にするのはおすすめしません。

    トピック投稿者 shiro99

    (@shiro99)

    では、その個別の URL をウェブブラウザーでアクセスしてみるとどう表示されますか?

    メール投稿の
    すぐにメッセージを読み出す。
    と同じ表示になります

    厳しい状況です

    モデレーター IKEDA Yuriko

    (@lilyfan)

    メール投稿の
    すぐにメッセージを読み出す。
    と同じ表示になります

    これは正常に動作しているのではないですか?
    “There doesn’t seem to be any new mail.” すなわち、サーバーにメールがないという表示ですよね?

    サーバーにメールがあるはずなのにこの表示になるとしたら、それはメールサーバーの問題であって Ktai Entry の問題ではありません。

    Gmail は、一度 POP でチェックしてしまうと、2回目は「既読」判定になるので上記のような表示になると思われます。

    トピック投稿者 shiro99

    (@shiro99)

    これは正常に動作しているのではないですか?

    ええ、正常動作してます、しかし、やりたいことはローカル手動でチェックするのではなく、
    サーバー上で自動定期チェックをやりたいのです

    モデレーター IKEDA Yuriko

    (@lilyfan)

    ゆっくりではありますが、問題の切り分けは進んでいますよ。お互い、もうちょっとがんばりましょう。

    しかし、やりたいことはローカル手動でチェックするのではなく、
    サーバー上で自動定期チェックをやりたいのです

    ええと、「正常動作している」ということは、この 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 やサービス名を書いてもらえれば、同じサービスを使っている人のヒントがあるかもしれませんが、むしろ、サポートに質問するか、サーバーのマニュアルを熟読するかしてみてください。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「Ktai Entry MUでcron設定」には新たに返信することはできません。