[ai] for each の途中で一時停止させるには・・・・


安い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サーバのアクセスログがこれ
App Inventor2+SQLのbulk importを安定させたい

3秒間に30個以上のファイルをダウンロード

1秒間に、30ファイルx500レコード=15000回のinsert実行
超高負荷な仕様
でも、これが唯一の方法なんです(泣)

安定させる、何か良い対策は無いかな・・・・

そうだ、”for each 1 to 40″中にポーズが作れないか?

で、考えたのがこれ!
App Inventor2+SQLのbulk importを安定させたい

1:最初のfor eachは先頭9ファイルだけで終了。
2:そしてTimerが起動!
3:9秒後に、後半処理用のfor eachを実行

なぜ、「9ファイル目で9秒待ち」仕様したのかと言うと、深い意味はありません。
色々テストし一番安定してるように見えただけ。

この改良後、WEBサーバのログがこんな感じに変わりました。
App Inventor2+SQLのbulk importを安定させたい

ダウンロード途中に10秒(=プログラムでは9秒なんですが)のポーズが出来た!
不思議なことに9ファイル目ではなく、一時停止したのは22ファイル目!

App Inventor2の「for each」+「Timer」の組み合わせは、かなりいい加減!?
3端末で試したところ、WEBサーバへのアクセスが「for each」9ファイル目ポーズ、全機バラバラのタイミングで発生

でも、まぁいいか!
改良後は、何かよくわかりませんが、少し私のアプリが安定しました


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


2015年11月
 1
2345678
9101112131415
16171819202122
23242526272829
30 

Topics

Comments

Archive