PHP がファイルを受信するときのいくつかの問題 (高い同時実行性を考慮して)
最近、MFC で書かれた大きなファイルをアップロードするためのツールを作成していますが、PHP 側でいくつかの問題が発生しました。私の考えは、大きなファイルを MFC ファイルで切り取るというものです。その後継続的に http で小さいファイルを PHP 側にアップロードし、PHP はこれらのファイルを結合しますが、いくつかの問題が発生しました。
1. PHP のファイルの結合はファイルの末尾に追加することで行われるため、2 人がアップロードしたときファイルが同じ名前である場合、アップロードしたばかりのファイル ブロックが誰のものであるかを区別できないのは厄介です。 (個人的には競合を避けるためにロックを使用することを検討していますが、一方がアップロードしている場合、もう一方がアップロードを完了するまで待たせてからアップロードすることはできません。)
2. ユーザーが途中でアップロード共有をオフにすると、どうなりますか?一時ファイルをクリーンアップするにはどうすればよいでしょうか? これらのゴミをクリーンアップするには別の常駐プログラムを作成する必要がありますか?
アドバイスをお願いします。
------解決策のアイデア----------------------
アイデア: それぞれに追加できます小さなブロック ファイルデータの前に複数の識別子を追加して、それらを同じファイルとして識別します。uuid
を生成できます。-----解決策のアイデア---- --------- ---------
フラグメント ファイル名には一意の識別子が必要です。
たとえば、形式
uid: ファイルの一意の ID 識別
num: このファイルのフラグメントの数
curr: 現在のフラグメントのシリアル番号
uid_num_curr
例:10000_10_01
-----ソリューションアイデア----------------------
笑解決策 2 人が同じ名前のファイルをアップロードする場合、アップロードしたばかりのファイル ブロックが誰に属しているのかが分からず、当惑することがあります。 質問がありますか?明らかに違います!
チャンクアップロードとチャンクダウンロードの原理は同じです。データ ソースは、ファイル名、ファイル長、各ブロックの順序、識別、長さ、検証情報、およびデータの整合性とアセンブリのチェックに関連するその他のデータ ブロックを含むレコードを提供する必要があります。通常、受信側はそれをファイルの形式で保存し、使用します。
チャンクで送信されるデータ ブロックの前に、ブロックを識別する情報も追加する必要があります。受信側で情報を分離し、情報ファイルと比較した後、データ ファイルを組み立てることができます。 >