FuelPHPのTaskを利用する

FuelPHPのTaskを利用する

FuelPHPでバッチ処理を行う際に利用するTaskですが、とても簡単に使える上にmodelなどを共通で使うことができるため実装も簡単になります。
今回は、データを取得しデータベースに保存するところまでやってみたいと思います。

 

作成するものですが、特定のURLへアクセスし内容(html)を取得し、そのまま保存するだけの何に使えるか・・・わからない物です。

 

まずは、データベースに下記のテーブルを用意します。

CREATE TABLE sample (
  id INT(11) UNSIGEND NOT NULL AUTO_INCREMENT,
  url VARCHAR(256) NOT NULL,
  html TEXT,
  PRIMARY KEY (id)
);

 

今回はデータベース接続にModelを利用するので、app/classes/modelにSample.phpを用意します。

<?php

use Orm\Model;

class Model_Sample extends Model
{
  protected static $_properties = array(
    'id',
    'url',
    'html',
  );
}
&#91;/php&#93;

&nbsp;

次にapp/tasksの中に、実際の処理を記述するsample.phpを用意します。
&#91;php&#93;
<?php

namespace Fuel\Tasks;
use Fuel\Core\Cli;
use Fuel\Core\DB;
use Fuel\Core\DBUtil;
use Curl\CurlUtil;

class Sample
{
  public static function run($url = null) {
    if (!$url) exit();

    $html = file_get_contents();
    $model = \Model_Sample::find_by_url($url);

    if ($model) {
      $model->html = $html;
    } else {
      $model = Model_Sample::forge();
      $model->url = $url;
      $model->html = $html;
    }
    $model->save();
  }
}

 

イレギュラーな処理については考慮していませんが、単純にURLベースに内容を保存するだけならコレで大丈夫です。

 

では、この処理を実行してみます。

php oil refine sample "http://blog.code4u.org/"

 

上記の方法でも実行ができますが、refineの部分を下記のようにrにすることも可能です。

php oil r sample "http://blog.code4u.org/"

 

実行後にSQLを実行することでデータが登録されていることが確認できるはずです。
Taskを利用することで、既存の資源(Modelなど)を利用できるため、少ないコードで簡単に実装できるのは魅力的です。

phpカテゴリの最新記事