Dec 20

Pseudocronの使い方(続き)

ソースは後で書きます>< ※大分後になりましたorz
下書き機能欲しいなー>< ※付きました。これでこんな不細工なことは無くなる・・・かも。
前回のエントリーでも書きましたが、Pseudocronは定期実行させるラインにRSSデータを渡すことが出来ます。
その場合必要になるworkerがあります。定期実行の方法によって

ブラウザの場合:SubscriptionRequest
シェルの場合:SubscriptionArgs

と、違うworkerが必要になります。それぞれconfigは次のようにします。

SubscriptionRequest

    module: SubscriptionRequest.SubscriptionRequest
    config: 
      key: rss
      set: subscriptionrssobject__rss
      escape: none


SubscriptionArgs
    module: SubscriptionArgs.SubscriptionArgs
    config: 
      key: 1
      set: subscriptionrssobject__rss
      escape: none


さらにRSSデータを全部1度に送るかitemごとに分割して送るかも選択できます。こうすることで多数のアイテム処理にかかる負荷を分散させることが可能です。

例としてCSVで作ったフィードアドレスを定期的に送ってフィードを取得し、メールする処理を載せます。

cron部分(任意のファイル名)
<?php
require_once("__init__.php");
Rhaco::import("Conveyaml");
Conveyaml::execute(
<<< __YAML__
---
plugins: 
  - 
    module: SubscriptionText.SubscriptionText
    config: 
      filename: feed //publishディレクトリ内のfeedというファイルを読み込みます。
      properties: link
      splitter: tab
  - 
    module: PublishPseudocron.PublishPseudocron
    config: 
      file: mailer
      type: linux
      post: each
      finish: wholespecified //全部送信したら終了します。
      loop: 1
      time: 30
__YAML__
);

処理部(mailer.php)
<?php
require_once("__init__.php");
Rhaco::import("Conveyaml");
Conveyaml::execute(
<<< __YAML__
---
plugins: 
  - 
    module: SubscriptionArgs.SubscriptionArgs
    config: 
      key: 1
      set: subscriptionrssobject__rss
      escape: none
  - 
    module: >
      SubscriptionRssObject.SubscriptionRssObject
  - 
    module: FilterExplode.FilterExplode //リンクにrssのURLが入っていれば読み込みます。
  - 
    module: PublishMail.PublishMail
    config: 
      to: test@testmail.com
__YAML__
);


色々な応用が出来ると思いますので、やってみられた方は是非教えて下さい。

| comment(0)

このエントリーのはてなブックマーク (-)