HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0513
hkrftpgetのバグ(?)7解決


hkr

リンク

2015/5/13(Wed) 00:17:23|NO.69162

ftpgetコマンドを連続実行して複数ファイルを取得する際、ある程度ウェイトを入れて
実行しないと、ダウンロードをした「ふり」をして1つ前のファイルをしれっと
保存してしまうみたいです。この場合エラーコードは返してくれません。

そこでftpget実行の間隔をあけるためのウェイトなのですが、
どれくらい入れればよいのかわからず困っています。

ローカルサーバー上では適当にwait 10くらい挟んでやれば動作するみたいなのですが、
この値の推奨値をどう設定すればよいものか・・・

netmodeコマンドでftpコマンド処理中かをチェックしてみましたが、
こいつも割と嘘をつくみたいですし、何か良い方法はありませんでしょうか?



この記事に返信する


hkr

リンク

2015/5/13(Wed) 00:25:12|NO.69163

すいません、追記です。
試しに8000個のファイルのダウンロードで実験してみました。

とりあえずwait 100くらい入れてftpget命令を実行してみたのですが、
だいたい1割くらいファイルのダウンロードを取りこぼすみたいです。
(ファイル自体はできているのだが、中身が別のファイル)
試しにwait 1000にしても症状が変わらないのでwaitの問題ではないのかもしれません。



hkr

リンク

2015/5/13(Wed) 00:49:57|NO.69165

その後いろいろ試して、一応解決策らしきものを見つけたのですが・・・

ftpgetコマンドを発行する前に必ず

exec "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8"

を実行してIEの一時キャッシュを全クリアすれば、
ftpgetがマニュアル通りの正常動作するみたいです。


ただし、たとえば8000個のファイルをDLする場合、8000回キャッシュクリアを繰り返さない
とftpgetコマンド自体が正常に動作しないですし、DL中にIEを使うとそれはそれで大変な
ことになります。

それでも一応こんな状況でも使えないことはないのですが、いくらなんでも酷いので
なにかもうちょっと、スマートな解決策ありませんでしょうか・・・(´・ω・`)



kanamaru

リンク

2015/5/13(Wed) 18:25:08|NO.69170

8000個のファイルで実験した時のプログラムを見せてください。
詳しくはわからないですが、
ftpgetの後にstatの値を調べていますか?
ひょっとしたらstatが0じゃないのかもしれません。

repeat ftpget "hoge.txt","hoge.txt" if stat=0:break wait 0 loop
のようにしたらうまくいくかもしれません。
少なくともhdlを見る限りはそう思います。




kanamaru

リンク

2015/5/13(Wed) 18:28:57|NO.69171

の位置を間違えたみたいです。
すいません。



kanamaru

リンク

2015/5/13(Wed) 18:32:47|NO.69172

<PRE>って無視されるんですねやっぱ。



hkr

リンク

2015/5/14(Thu) 18:37:24|NO.69195

ありがとうございます。

もうちょっと色々試してみたいと思います。



hkr

リンク

2015/5/14(Thu) 18:54:20|NO.69197

ありがとうございます。
statの値のチェックをループさせる事で解決しました。

ヘルプには、

「実行に成功した場合は、システム変数statに0が代入され、
失敗した場合はそれ以外の値が代入されます。」

との記述があったのでftpget実行後1度しかstatをチェックしていなかったのですが、
statの値がリアルタイムに更新されるコマンドも存在するんですね・・・(´・ω・`)



ONION software Copyright 1997-2021(c) All rights reserved.