大きなファイル ハンドラーを実装する必要があるアプリケーションを PHP で開発しています。ファイルの読み書きは問題ありませんが、ファイルの内容を確認するのは問題です。
変数が同じドキュメントで既に使用されているかどうかをチェックする再帰関数を作成しました。
private function val_id($id){
if(!isset($this->id)){
$this->id = array();
}
if(in_array($id, $this->id)){
return $this->val_id($id+1);
}else{
$this->id[] = $id;
return $id;
}
}
in_array($id,$this->id) が FALSE を返す場合、$id は $this->id (使用されたすべての ID を含む配列) に追加され、有効な ID を返します。
これが TRUE を返す場合、パラメータ $id+1 を持つ同じ関数を返します
一度に 300000 を超えるレコードについて話しているので、PHP はそのような大きな配列を格納できません。この配列が大きくなりすぎると、生成するドキュメントに行を書き込むのをやめるようです。しかし、私はそのようなエラーメッセージを受け取りません。
生成されたドキュメントは複数の行 INSERT を持つ SQL ファイルであるため、別の解決策として、ID がデータベースに既に存在するかどうかを確認することができます。MySQL はこれらの例外をキャッチし、ID に 1 を追加してこれらのエントリを再試行できますか? どのように?
この問題をどのように解決する必要があると思いますか?
敬具、
ウーター