2020.9.11
カクテルDB修繕ログ#5【とりあえずコードを書こう】
ということで、コーディングに入りたいと思います。
cronで回すことを前提とするなら、流れとして・・・・・・
1.足りないレコードを補填する
2.データが空のレコードについてAPIを発行する
3.返ってきたデータを保存する
という流れになりそうです。足りないレコードを補填する、に関しては更新日時カラムとか持ってたら効率化できると思うんですが、分岐処理させるだけめんどくさいので総スキャンさせることにします(ゴミ)
created_atカラムなんて必要ねーわ!めんどくさいから省略〜〜wwとか言ってるとこういう時困るんですね・・・・・・()
とはいえ、全体スキャンしすぎるとうんちっちになりそうなのでもうちょっと賢い方法を考えたいと思います。基本的に一度挿入されたデータはこちらから手を加えない限り変わることはないし、なにか不具合があれば人力で対処する・・・・・・という前提に立てば、brand_idやcategory_idといったカラムの
最大値を検索すれば、それと比較して足りないレコードを取ってこれると思います。
まずはbrand_idの最大値を検索し、それよりも大きなbrand_idがbrandテーブルに存在するのであれば、そのデータはまだアフィリエイト情報が作成されていないのでデータを作成する必要がある・・・・・・という流れができますね。
これはmiddle_id、category_idにも同じことが言えます。
つまりその後はwhere句でごっそりidと名前だけ持ってきて、foreachかなんかでぐるぐる回してinsertしまくればOK、みたいな感じになりそうですね。
じゃあそういう感じのコード、書いちゃいましょう。
といってもPHPでAjax飛ばすのってどんな感じにやるんだっけ???ってぐらいブランクがあるのでググったら
GitHubにライブラリ落ちてたのでこれを使うことにします。
Usage見てもいまいちピンと来ないんですけど
とりあえずこんなコードを書きました。これで一応目的の動作はするっぽいです。どういうデータを拾ってくるのかっていうと・・・・・・
わかりづらいと思いますが、この状態だとこういうデータが返ってきます。要するにオプション全指定したものが返ってくるっぽいですね。こんなにいっぱいデータ要らないんですけど、必要なものは揃ってるので、ここから必要なものを抜き出すことになります。
このままだとちょっと階層構造を把握したくないので独自のクラスに突っ込むことで管理しやすくすることにしようかな。
ということで、あっさりできました。ここまでデータが採取できればあとは表示するだけなので何も考える必要はありません。
が、やはり
酒類に関してはAmazonは弱いので、やはり楽天のこともサポートしようと思います。
ということで次回は予定を変更して、楽天API編です。