ネクストエンジンAPI - バッチ処理でAPIを使用する

ネクストエンジンAPI - バッチ処理でAPIを使用する

ここでは、ネクストエンジンAPIクライアントを使用したバッチ処理の作成方法について説明いたします

バッチ処理でネクストエンジンAPIを使用するために最低限必要なこと

バッチ処理でネクストエンジンAPIを使用するために最低限必要なことは、

  • Nextengine\Api\Clientクラスのインスタンスを作成
  • そのインスタンスに、DBから取得したModel_UserのインスタンスをsetUserメソッドを使用しセットする

という手順が必要になります

また、setUserメソッドでセットされるユーザは、

access_tokenプロパティとrefresh_tokenプロパティに値が格納されている前提で動作するため、

事前にaccess_tokenプロパティとrefresh_tokenプロパティの値をチェックする必要があります

まとめると、以下の様な処理が最低限必要になります

// アクセストークンを持っている(nullでない)ユーザを全件取得
$users = \Model_User::findBy('access_token', null, '!=');

// それら全てのユーザに対して
foreach($users as $user) {
    // APIクライアントのインスタンスを生成し、
    $client = new \Nextengine\Api\Client();
    // ユーザをセットし
    $client->setUser($user);

    // 何かする
}

FuelPHPのタスクを作成

バッチ処理は、FuelPHPのタスク1で実現します

タスクを作成するには、oil generate taskコマンドを使用します

$ cd /path/to/sample-fuelphp
$ php oil generate task [任意のタスク名]

[任意のタスク名]には、アルファベットのみ指定できます

今回は、デモとして「商品マスタの情報を取得」するgoodsタスクを作成します

商品マスタを取得するタスクは、fetch_masterメソッドで実装します

早速oilコマンドを使ってファイルを生成します

$ php oil generate task goods fetch_master
        Preparing task method [Fetch master]
    Creating tasks: /Users/SYS-INOUE/work/noob/tmp/fuel/app/tasks/goods.php

生成されたfuel/app/tasks/goods.phpを開き、

fetch_masterメソッドを編集します

    /**
     * This method gets ran when a valid method name is not used in the command.
     *
     * Usage (from command line):
     *
     * php oil r goods:fetch_master
     *
     * @return string
     */
    public function fetch_master()
    {
        // アクセストークンを保持しているユーザのみ取得する
        $users = \Model_User::findBy('access_token', null, '!=');

        foreach($users as $user) {
            $client = new \Nextengine\Api\Client();
            $client->setUser($user);

            // 商品マスタの情報を取得する
            $response = $client->apiExecute('/api_v1_master_goods/search', array(
                'fields' => 'goods_id,goods_name,stock_quantity,supplier_name',
                'limit'  => 1000,
            ));

            $goods = $response['data'];
            echo count($goods)."件の商品マスタの情報を取得しました".PHP_EOL;
        }
    }
  1. アクセストークンを持っている全ユーザに対して、
  2. 商品マスタ検索APIから
  3. goods_id,goods_name,stock_quantity,supplier_nameといったフィールドを持つレスポンスを
  4. 1000件取得し
  5. 取得できた件数をechoして終了

という処理をしています

使用できるAPIや引数については、APIのドキュメントを御覧下さい


このタスクを実行してみます

タスクを実行するには、oil refine [タスク名](:メソッド名)コマンドを使用します

$ php oil r goods:fetch_master
1000件の商品マスタの情報を取得しました

期待通りの動作をしています

このように、APIを使用するバッチ処理を記述して下さい


更新履歴
  • 2015/02/17: ネクストエンジンAPI - バッチ処理でAPIを使用するページ作成

  1. Tasks - 概要 - FuelPHP ドキュメント

    http://fuelphp.jp/docs/1.7/general/tasks.html