ネクストエンジン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;
}
}
- アクセストークンを持っている全ユーザに対して、
- 商品マスタ検索APIから
goods_id,goods_name,stock_quantity,supplier_name
といったフィールドを持つレスポンスを- 1000件取得し
- 取得できた件数をechoして終了
という処理をしています
使用できるAPIや引数については、APIのドキュメントを御覧下さい
このタスクを実行してみます
タスクを実行するには、oil refine [タスク名](:メソッド名)
コマンドを使用します
$ php oil r goods:fetch_master
1000件の商品マスタの情報を取得しました
期待通りの動作をしています
このように、APIを使用するバッチ処理を記述して下さい
更新履歴
- 2015/02/17: ネクストエンジンAPI - バッチ処理でAPIを使用するページ作成
-
Tasks - 概要 - FuelPHP ドキュメント
http://fuelphp.jp/docs/1.7/general/tasks.html ↩