これには、アップロードされた写真のバッチ処理、ドキュメントのバックアップ、大規模なデータベースダンプの記入などがあります。 ファイルマネージャーを書くとき(2010年に人気が爆発するのを待ちます;))ファイル操作を整理し、操作のステータスをユーザーに示すための簡単なライブラリを書きました。
基本的な考え方は非常に簡単です。
ファイルに対する操作は、いくつかのコンポーネントに分割できます。
- 作業に必要なファイルのまさにリストを取得し、ディレクトリの正しい「拡張」を整理します-再帰なしで(なぜそう、私は後で説明します)
- 直接ファイル処理:
- ファイル処理の開始(たとえば、ファイル記述子を開く)
- ループ ( ファイルが処理されるまで ){
- 繰り返しピース...
- }
- ファイル処理の終了(ファイル記述子を閉じるなど)
これがファイルのコピー操作またはダンプの場合、すべてのステップが存在します。 ファイルの削除などのより単純な操作の場合、ループや最終段階がない場合があります。
これは何のためですか? なぜそんなに複雑なのですか?
ファイル操作がどの部分で構成できるかを理解したので、最も重要なことに進みましょう。これは、アプリケーションの中でタスクに何を与えますか(複雑で長いファイル操作の状態を示します)。
これにより、以下が得られます。
- 処理を待っているファイルのツリー全体を保存します(非再帰的なディレクトリツリー拡張アルゴリズムについて話していたことを思い出してください)。
- 任意の場所(つまり、開始直後、またはサイクルの途中)で操作の状態を保存する理論的な能力
- 前の2つの結果として、操作を定期的に中断してユーザーに操作の状態を示し、最後に記憶した場所から再び開始する機能
- (実装されていません)状態の損失や作業の完全な完了なしに、実行中に操作エラーを直接制御する機能
ユーザーにとって何が変わりますか?
宛先:
読み込み中...
(30分後)504ゲートウェイタイムアウト
後:
変換を開始しています...
...
(ステータスは5秒ごとに更新されます)ロード(3000ファイルのうち123ファイルが変換されます)...
...
操作完了
ライブラリ自体はどこにありますか?
ライブラリテキスト自体(コメント付きの150行)と簡単な使用例は次のとおりです。
forum.dklab.ru/viewtopic.php?p=146572#146572
私のファイルマネージャーで使用してください:
demo.dolphin-php.org (ログインログイン、パスワードパスワード、バージョン-完全)(コピー、削除、CHMODファイル、...)
.doc形式のより詳細な説明[英語]:
m.forum.dklab.ru/files/multipart.rar