バッチファイル処理ソリューション(PHP)

企業の管理パネル、またはサイトの管理部分では、多くの場合、多数のファイルを処理し、操作のステータスをユーザーに表示する必要があると思います。



これには、アップロードされた写真のバッチ処理、ドキュメントのバックアップ、大規模なデータベースダンプの記入などがあります。 ファイルマネージャーを書くとき(2010年に人気が爆発するのを待ちます;))ファイル操作を整理し、操作のステータスをユーザーに示すための簡単なライブラリを書きました。



基本的な考え方は非常に簡単です。



ファイルに対する操作は、いくつかのコンポーネントに分割できます。

  1. 作業に必要なファイルのまさにリストを取得し、ディレクトリの正しい「拡張」を整理します-再帰なしで(なぜそう、私は後で説明します)
  2. 直接ファイル処理:
    • ファイル処理の開始(たとえば、ファイル記述子を開く)
    • ループファイルが処理されるまで ){
    • 繰り返しピース...
    • }
    • ファイル処理の終了(ファイル記述子を閉じるなど)


これがファイルのコピー操作またはダンプの場合、すべてのステップが存在します。 ファイルの削除などのより単純な操作の場合、ループや最終段階がない場合があります。



これは何のためですか? なぜそんなに複雑なのですか?



ファイル操作がどの部分で構成できるかを理解したので、最も重要なことに進みましょう。これは、アプリケーションの中でタスクに何を与えますか(複雑で長いファイル操作の状態を示します)。



これにより、以下が得られます。

  1. 処理を待っているファイルのツリー全体を保存します(非再帰的なディレクトリツリー拡張アルゴリズムについて話していたことを思い出してください)。
  2. 任意の場所(つまり、開始直後、またはサイクルの途中)で操作の状態を保存する理論的な能力
  3. 前の2つの結果として、操作を定期的に中断してユーザーに操作の状態を示し、最後に記憶した場所から再び開始する機能
  4. (実装されていません)状態の損失や作業の完全な完了なしに、実行中に操作エラーを直接制御する機能




ユーザーにとって何が変わりますか?



宛先:



読み込み中...

(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



All Articles