先輩の皆さん、こんにちは。
160 万行もの大きなログ ファイルを読みたいと思っています。
ファイルの読み込み速度を最適化する方法を教えてください。
データベースの読み取りと書き込みがしたいからです。
弟は現在、fopen と fget を使用して次のように読み取ります。
先輩方からアドバイスをお願いします。
ありがとうございます。
fgets 行を読み込みます
それでも遅すぎる場合は、次のようにします:
fread ブロックを読み込みます (2048 以上)
読み込み後に行ごとに切り取ります
処理時に処理せずに最後のブロックを保持します、次回使用します 読み取られたコンテンツは接続されて処理されます
最も早い方法は、コマンドでloadfileを使用して一時テーブルに直接ロードしてから処理することです
先輩、コードのデモをしてもらえますか?
ありがとうございます。
$fn = '文件名';$fp = fopen($fn, 'r');$last = '';while(! feof($fp)) { $a = preg_split("/[\r\n]+/", $last . frenad($fp, 2048)); for($i=0; $i<count($a)-1; $i++) { 对数据的处理 } $last = $a[$i];}if($last) 对数据的处理
fread を使用してブロックを読み取ると、速度が向上します。
先輩、助けてくれてありがとう。