1万行超の商品マスターインポートがどうしても安定しない
AppInventorとSQLiteの仕様のためマスターインポートは下記の方法しかない
- PC作業:商品マスターを500件ずつ小分けしたbulk insertファイルを数十個作成
- PC作業:UTFに変換
- PC作業:webサーバの公開フォルダーへFTP
- アプリ側:webgetでbulk insertファイルをダウンロードしimport実行
- アプリ側:ファイルの数だけLOOPする(数十回)
この処理中、WEBサーバに負荷が掛かりすぎて、ときどき1・2ファイル分がimportエラー
これまでの対応策は、以下のようなもの
- 「FOR~LOOP」を前半部(15ファイルまで)をインポート
- 「Timer」で9秒間ポーズ
- 後半部(16ファイル以降)をインポート
しかし、WEBサーバのAccess Logを見る限りでは「9秒ポーズ」が効いてるような効いてないような・・?
そこそこ安定したが、まだ怪しい!
そこで、もうひと工夫
「Timer」の代わりに「Notifier」
ファイル15で「Notifier」メッセージ表示

表示させたメッセージがこれ

ファイル16以降は、ボタンを押せば「Notifier:afterChoosing」経由で後半インポートが開始させるはずが・・・・・
しかし、Notifierをガン無視して動き続けてる!
Notifierでは、FOR~LOOPを中断できない仕様みたい
そこで、さらなる改良「Notifier:cancelable付き」を利用!
「実行」または「キャンセル」を選ばせるNofiierなんだから
「cancelable無しNofiier」のように
勝手に後半を実行するハズが無い!
で改良したのがこれ

後半のインポート部がこれ

メッセージがこれ

動かしてみると・・・・
キャー、ばっちり!
ボタンを押すまでWEBアクセスが止まってます!

これで、大きな問題がまた1つクリアできました。
プログラムって面白い。
有料サービスの解約、あと数か月待ってみようと思います 😀
コメントを残す