iliaa Wed Aug 18 16:56:57 2004 EDT
Modified files: /livedocs mk_notes.php Log: Cleanup & Optimizations. http://cvs.php.net/diff.php/livedocs/mk_notes.php?r1=1.3&r2=1.4&ty=u Index: livedocs/mk_notes.php diff -u livedocs/mk_notes.php:1.3 livedocs/mk_notes.php:1.4 --- livedocs/mk_notes.php:1.3 Sat Aug 14 17:34:05 2004 +++ livedocs/mk_notes.php Wed Aug 18 16:56:57 2004 @@ -19,7 +19,7 @@ // | livedocs. | // +----------------------------------------------------------------------+ // -// $Id: mk_notes.php,v 1.3 2004/08/14 21:34:05 iliaa Exp $ +// $Id: mk_notes.php,v 1.4 2004/08/18 20:56:57 iliaa Exp $ $create = <<<SQL BEGIN; @@ -33,13 +33,13 @@ ); CREATE INDEX notes_sect_idx on notes(sect); SQL; - $dbname = $argv[1] . '/livedoc-notes.sqlite'; $tmpdir = $argv[2]; $mirror = $argv[3]; -if (file_exists($dbname)) +if (file_exists($dbname)) { unlink($dbname); +} $DB = sqlite_open($dbname); sqlite_query($DB, 'PRAGMA default_synchronous=OFF'); @@ -48,37 +48,32 @@ sqlite_query($DB, $create); $n_notes = 0; -$n_data = 0; +$buffer = ''; $name = tempnam($tmpdir, 'notes'); copy('http://'.$mirror.'.php.net/backend/notes/all.bz2', $name); $fp = fopen("compress.bzip2://".$name, 'r'); -do { - $line = fgets($fp); - $n_data += strlen($line); - if (!strlen($line)) - break; - if (!strstr($line, '|')) { - echo "LINE: $line\n\n"; +while (($line = fgetcsv($fp, 100000, '|'))) { + if (!isset($line[5]) || isset($line[6])) { + echo "LINE: ".implode('|', $line)."\n\n"; continue; } - - list ($id, $sect, $rate, $ts, $user, $note) = explode('|', $line); ++$n_notes; - $note = sqlite_escape_string(base64_decode($note)); - $user = sqlite_escape_string($user); - - sqlite_query($DB, "INSERT INTO notes values ($id, '$sect', $rate, $ts, '$user', '$note');"); - -} while (true); + if ($n_notes % 1000) { + $buffer .= "INSERT INTO notes values (".$line[0].", '".$line[1]."', ".$line[2].", ".$line[3].", + '".sqlite_escape_string($line[4])."', '".sqlite_escape_string(base64_decode($line[5]))."');"; + } else { + sqlite_query($DB, $buffer); + $buffer = ''; + } +} -printf("\rDone: %d notes %d bytes\n", $n_notes, $n_data); +printf("\rDone: %d notes %d bytes\n", $n_notes, ftell($fp)); -sqlite_query($DB, 'COMMIT;'); +sqlite_query($DB, 'COMMIT'); fclose($fp); unlink($name); - ?>