zip拡張機能、小さなヒント

私のプロジェクトの1つでは、CSV形式のさまざまなデータのインポートが広く使用されています。 昔々、データはほとんどなく、誰もが1つまたは2つの大きすぎないファイルを直接ダウンロードして満足でした。 時間が経つにつれて、データはより多くなり、インポートされたファイルのサイズとその数は増加しました。 ZIPアーカイブでファイルをアップロードすることが決定されました。トラフィックを節約し、複数ではなく1つのアップグレードしかありません。



アーカイブを操作するために、 zip拡張子を使用しました。 ここでは、この拡張機能で何が起こっているのかを説明しません。ドキュメントで十分に詳しく説明しています。



私が役立った機能についてのみ説明します。 ユーザーがフォームにアップロードするファイルをインポートする場合、サーバー上のZIPアーカイブだけでは役に立たず、解凍する必要もありません。その場合は、それを削除する必要があります。 ZipArchive-> getStream()メソッドが助けになります。 ファイルハンドラーを取得し、たとえばfgetcsvで安全にフィードできます。



UPD。 おそらく完全には理解されていない。 ZIPにあるCSVファイルのデータが必要です。 そして、TSSV自体ではなく、データベースにこのデータが必要です。さらにアーカイブには必要ありません。 つまり、TSSVshekからデータベースにデータをインポートします。 そこで、一時ファイルを調整します($ _FILES ['userfile'] ['tmp_name'])。 そして、直接解凍せずに、それに含まれるすべてのTsSVshkiをデータベースにインポートします。 その後、PHPはアーカイブを削除しますが、これは不要になりました。



UPD。 Adelf habrayuzerから:場合によって(私のものではない)、 open_basedirのために$ _FILES ['userfile'] ['tmp_name']が利用できない場合があることを考慮に入れる必要があります。



この情報が誰かに役立つことを願っています。



All Articles