ネクストエンジンAPI - バッチ処理でAPIを使用する
ネクストエンジンAPI - バッチ処理でAPIを使用する
Section titled “ネクストエンジンAPI - バッチ処理でAPIを使用する”ここでは、ネクストエンジンAPIクライアントを使用したバッチ処理の作成方法について説明いたします
バッチ処理でネクストエンジンAPIを使用するために最低限必要なこと
Section titled “バッチ処理でネクストエンジン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のタスクを作成
Section titled “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; } }- アクセストークンを持っている全ユーザに対して、
- 商品マスタ検索APIから
goods_id,goods_name,stock_quantity,supplier_nameといったフィールドを持つレスポンスを- 1000件取得し
- 取得できた件数をechoして終了
という処理をしています
使用できるAPIや引数については、APIのドキュメントを御覧下さい
このタスクを実行してみます
タスクを実行するには、oil refine [タスク名](:メソッド名)コマンドを使用します
$ php oil r goods:fetch_master1000件の商品マスタの情報を取得しました期待通りの動作をしています
このように、APIを使用するバッチ処理を記述して下さい
- 2015/02/17: ネクストエンジンAPI - バッチ処理でAPIを使用するページ作成
Tasks - 概要 - FuelPHP ドキュメント