バッチファイル処理ソリューション(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

Source: https://habr.com/ru/post/J28601/


All Articles