初めて質問させていただきます。
Moriです。
現在開発中のアプリケーションの中で、wininet.dllを使ってFTP処理をしているのですが、FtpRemoveDirectoryがうまく動かなくて困っています。
単純に、ディレクトリ内の全ファイルを削除してディレクトリを削除することはできるのですが、
1)ファイルのダウンロード→2)ファイルの削除→3)ディレクトリの削除
という流れになると、2)で削除したはずのファイルが20秒くらいたたないと3)で削除されたと判断されずにエラーとなってしまいます。
どなたか対処法を御存知の方がいらっしゃいましたら教えてください。
よろしくお願いいたします。
Web系の開発はあまり詳しくはありませんが、自分も似たような経験
が仕事でありました。
原因:
1:ファイルをダウンロードをした時、キャッシュにログがたまります。
2:次に消したファイルを指定すると実際のフォルダ、ファイルがなくてもPCは最初にログを見にいきますので、(ログに残っていると)あると判断されます。
>20秒くらい
とありますが、これはPCがページの「自動更新」を行うので。
対処法
ログを消す処理を追加する
PS
はずれていたら、すいません。
MADIAさん、ありがとうございます。
>1:ファイルをダウンロードをした時、キャッシュにログがたまります。
一応、ファイルのダウンロード時にはキャッシュに書きこまないためのフラグを立てているんですが、
それでも書きこまれてしまうのでしょうか?
>ログを消す処理を追加する
具体的にはどのAPI関数で削除するのでしょう?
ひととおり検索したのですがそれらしきものが見つけられませんでした。
お手数ですが、よろしくお願いいたします。
いろいろ調べた結果、ファイルをダウンロードした際に、
FTPサーバのIISがサーバのキャッシュにファイル情報を書きこむことが
原因と判明しました。
キャッシュは60秒たたないと消えないらしいので、60秒処理をウェイトするか、
レジストリにキャッシュを書きこまない設定を追加することで対処しようと思います。
ツイート | ![]() |