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);
-
?>