私はPHPで処理を行っています。このプロセスは、インターネットからファイルを取得し、zipファイルの中に入れます。ターゲットzipファイルはアルゴリズムに基づいており、4096個のzipファイルがあります。ターゲットのzipファイルは、処理されたURLのハッシュに基づいています。zipファイルへの同時書き込み
私は、スクリプトを同時に実行することができるように、http申請を開始する別のプログラムを用意しています(約110プロセス)。
私の質問は簡単です。スレッドは疑似ランダムなので、2つのスレッドは同じ瞬間に同じzipファイルにファイルを追加しようとすることがあります。
可能ですか? 2つのプロセスが同時にファイルを追加しようとすると、ファイルが破損しますか?
ファイルをロックするなどの可能性があります。 私はセマフォを使用することを考えていましたが、読み込み、phpセマフォはウィンドウの下では動作しません。
私はこの可能な解決策を見てきました。同時に2つ以上の異なるPHPのproccessesからzipファイルにファイルを追加することが許可されている場合
if (!function_exists('sem_get')) {
function sem_get($key) { return fopen(__FILE__.'.sem.'.$key, 'w+'); }
function sem_acquire($sem_id) { return flock($sem_id, LOCK_EX); }
function sem_release($sem_id) { return flock($sem_id, LOCK_UN); }
}
とにかく質問です。
ありがとうございました。
コメントありがとうございます。私は投稿したようなファイルロックソリューションを使用します。 – hamboy75