安いAndroidスマホで「貧社のハンディターミナル」システムを作るぞ!
と始めたもののアプリ完成まで、まだまだ道は遠い
特に高いハードルが、約2万レコードの商品マスターインポート
超不安定なので、改良にチャレンジ!
AI2LiveComplete(=App Inventor2+SQLite接続機能)での外部データインポート方法は、1択
[SQLite Bulk Data Load–Hossein Amerkashi’s Blog]
このサービスの生みの親Amerkashi社長のブログの方法だけ
現状
1:500レコード毎にbulk insertファイルを作成
2:UT8Fに変換しWEBサーバへアップロード
3:アプリからダウンロード
4:insert文実行
5:ファイル数だけLOOP
マスター数2万行で、作るbulk insertファイルは20000÷500=40ファイル
これを”for each 1 to 40″でループしながらinsert実行
この処理が、超不安定!
インポート中のWEBサーバのアクセスログがこれ

3秒間に30個以上のファイルをダウンロード
1秒間に、30ファイルx500レコード=15000回のinsert実行
超高負荷な仕様
でも、これが唯一の方法なんです(泣)
安定させる、何か良い対策は無いかな・・・・
そうだ、”for each 1 to 40″中にポーズが作れないか?
で、考えたのがこれ!

1:最初のfor eachは先頭9ファイルだけで終了。
2:そしてTimerが起動!
3:9秒後に、後半処理用のfor eachを実行
なぜ、「9ファイル目で9秒待ち」仕様したのかと言うと、深い意味はありません。
色々テストし一番安定してるように見えただけ。
この改良後、WEBサーバのログがこんな感じに変わりました。

ダウンロード途中に10秒(=プログラムでは9秒なんですが)のポーズが出来た!
不思議なことに9ファイル目ではなく、一時停止したのは22ファイル目!
App Inventor2の「for each」+「Timer」の組み合わせは、かなりいい加減!?
3端末で試したところ、WEBサーバへのアクセスが「for each」9ファイル目ポーズ、全機バラバラのタイミングで発生
でも、まぁいいか!
改良後は、何かよくわかりませんが、少し私のアプリが安定しました
コメントを残す