タグ付けされた質問 「file-handling」

ファイル処理とは、ファイルおよびファイルハンドルを操作するための一連のツール、関数、およびライブラリを指します。ファイルの作成、書き込み、追加、移動、および削除は、このドメインに分類されます。

4
PHP file_put_contentsファイルのロック
セナリオ: あなたは各行に文字列(平均文の価値)を持つファイルを持っています。議論のために、このファイルのサイズが1Mb(数千行)であるとしましょう。 ファイルを読み取り、ドキュメント内の一部の文字列を変更し(追加するだけでなく、一部の行を削除および変更する)、すべてのデータを新しいデータで上書きするスクリプトがあります。 質問: 「サーバー」のPHP、OS、またはhttpdなどには、このような問題(書き込みの途中で読み取り/書き込み)を停止するためのシステムがすでにありますか? ある場合は、その仕組みを説明し、例や関連ドキュメントへのリンクを示してください。 そうでない場合、書き込みが完了するまでファイルをロックし、前のスクリプトが書き込みを完了するまで他のすべての読み取りや書き込みを失敗させるなど、有効または設定できるものはありますか? 私の仮定およびその他の情報: 問題のサーバーは、PHPとApacheまたはLighttpdを実行しています。 スクリプトが1人のユーザーによって呼び出され、ファイルへの書き込みの途中であり、別のユーザーがその瞬間にファイルを読み取る場合。まだ書かれていないため、それを読んだユーザーは完全なドキュメントを取得できません。(この仮定が間違っている場合は修正してください) 私が関心を持っているのは、テキストファイルへのPHPの書き込みと読み取り、特に関数「fopen」/「fwrite」と主に「file_put_contents」だけです。「file_put_contents」ドキュメントを確認しましたが、詳細レベルや「LOCK_EX」フラグが何であるか、または何であるかについての詳細な説明は見つかりませんでした。 このシナリオは、ファイルのサイズが大きく、データの編集方法が原因で、これらの問題が発生する可能性が高いと想定する最悪のシナリオの例です。これらの問題について詳しく知りたいのですが、「mysqlを使用する」や「なぜそうしているのか」などの回答やコメントを望まない、または必要としません。ファイルの読み書きについて知りたいだけです。 PHPでは、適切な場所/ドキュメントを調べているようには見えません。そうです、私はPHPがこの方法でファイルを操作するための完璧な言語ではないことを理解しています。

4
オブジェクトの作成は、暗黙的または明示的にファイルを作成する必要がありますか?
私は、ある形式のファイルを読み取り、別の形式のファイルを作成することを唯一の目的とするオブジェクトを作成しています。 オブジェクトの初期化中に出力ファイルを暗黙的に作成するのが最善ですか、それともユーザーがこのファイルを作成するかを選択できるパブリックメソッドを用意するのが最善ですか?

1
JsonのBase64:Rest APIの良いアイデアですか?
私はRest APIを開発していて、自分自身に質問しています。 たとえばファイルのアップロードのために、base64でエンコードされたデータをJsonに配置することは良い考えですか?何base64ではいくつかの含まれている場合は{、}、:文字や休憩JSONコンテンツを? 良いアイデアではない場合、ベストプラクティスとして広く考えられている選択肢はどれですか。

9
マルチスレッドファイルのコピー
ファイルをネットワーク共有の場所にアップロード(およびファイルに対して他の操作を実行)するために使用されるユーティリティがあります。 ファイルサイズは、数MBから500 MBに変化する傾向があります。 共有の場所にファイルをアップロードするときにマルチスレッドをサポートする必要があるという提案が出ました-バイトチャンクで行う必要はありません-各スレッドは1つのファイルを選択してアップロードを試行する必要があります。 マルチスレッドがこのようなIO操作を高速化できるかどうかは、私にはよくわかりません。私の勘は有効ですか? 確かにこの機能を構築する必要がある場合、ファイルコピーエンジンの設計にはどのようなアプローチが適しているのでしょうか。 robocopyなどのツールを使用することは理にかなっていますか(私はマルチスレッドをサポートする新しいバージョンを読みました)。 編集:遅延といくつかの重要な情報の欠落についての謝罪。 このユーティリティはC#(.Net 2.0)を使用して構築されており、今後のアップデートでも.Netを使用する必要があります(フレームワークのバージョンは制約ではありません)。ユーティリティはユーザーのマシンにインストールされます(WinXPの場合は約20)。ターゲット共有はWin2k3サーバー上にあります。 編集2:TPLを介したファイルのアップロードを実装する簡単なアプリケーションでいくつかのテストを実行することを決定しました。この分析を投稿して、先に進むかどうかを決定します。皆様のご協力に感謝いたします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.