com web/doc: Created indexes for database: include/lib_revche ck.inc.php scripts/rev.php www/revcheck.php

[email protected]
Newsgroups php.doc.web
Message-ID <[email protected]>
Commit:    4208d27d37b4279c622ed29184dbfa7ecede571f
Author:    Sobak <[email protected]>         Sun, 30 Mar 2014 08:14:05 +0200
Parents:   f01c461f5f7df054483e4114aa38baf72ecf61ce
Branches:  master

Link:       http://git.php.net/?p=web/doc.git;a=commitdiff;h=4208d27d37b4279c622ed29184dbfa7ecede571f

Log:
Created indexes for database

Indexes projected by bjori (Hannes Magnusson). This change fixes performance problems.

Changed paths:
  M  include/lib_revcheck.inc.php
  M  scripts/rev.php
  M  www/revcheck.php


Diff:
diff --git a/include/lib_revcheck.inc.php b/include/lib_revcheck.inc.php
index 4b744b4..a34c5ad 100644
--- a/include/lib_revcheck.inc.php
+++ b/include/lib_revcheck.inc.php
@@ -25,11 +25,10 @@ define("ALERT_SIZE",   3); // translation is  3 or more kB smaller than the en o
 define("ALERT_DATE", -30); // translation is 30 or more days older than the en one
 
 // Return an array of directory containing outdated files
-function get_dirs($idx, $lang)
-{
+function get_dirs($idx, $lang) {
     $sql = 'SELECT
         distinct b.name AS name, 
-        a.dir as dir 
+        a.dir AS dir
     FROM 
         files a, 
         dirs b 
@@ -161,7 +160,7 @@ function revcheck_available_languages($idx)
         return FALSE;
     }
 
-    $sql = 'SELECT distinct lang FROM description';
+    $sql = 'SELECT lang FROM description';
     $result = @$idx->query($sql);;
 
     if (!$result) {
diff --git a/scripts/rev.php b/scripts/rev.php
index ae17c0b..611c969 100644
--- a/scripts/rev.php
+++ b/scripts/rev.php
@@ -48,13 +48,11 @@ if (count($LANGS) == 0) {
 
 $SQL_BUFF = "INSERT INTO dirs (id, name) VALUES (1, '/');\n";
 
-$CREATE =<<<SQL
+$CREATE = <<<SQL
 
 CREATE TABLE description (
   lang TEXT,
   intro TEXT,
-  date TEXT,
-  charset TEXT,
   UNIQUE (lang)
 );
 
@@ -80,23 +78,29 @@ CREATE TABLE dirs (
   UNIQUE (name)
 );
 
+CREATE INDEX dirs_1 ON dirs (id);
+
 CREATE TABLE files (
-    lang TEXT,
-    dir TEXT,
-    name TEXT,
-    revision TEXT,
-    size TEXT,
-    mdate TEXT,
-    maintainer TEXT,
-    status TEXT,
-    UNIQUE(lang, dir, name)
+  lang TEXT,
+  dir TEXT,
+  name TEXT,
+  revision TEXT,
+  size TEXT,
+  mdate TEXT,
+  maintainer TEXT,
+  status TEXT,
+  UNIQUE(lang, dir, name)
 );
 
+CREATE INDEX files_1 ON files (dir, name);
+CREATE INDEX files_2 ON files (lang, revision, size, dir);
+CREATE INDEX files_3 ON files (lang, size, mdate, revision, size, dir);
+
 CREATE TABLE old_files (
-    lang TEXT,
-    dir TEXT,
-    file TEXT,
-    size INT
+  lang TEXT,
+  dir TEXT,
+  file TEXT,
+  size INT
 );
 
 SQL;
@@ -135,11 +139,11 @@ function parse_translation($lang)
 
         // Get intro text
         if (preg_match("!<intro>(.+)</intro>!s", $txml, $match)) {
-            $intro = @iconv($charset, 'UTF-8//IGNORE', trim($match[1]));
+            $intro = SQLite3::escapeString(@iconv($charset, 'UTF-8//IGNORE', trim($match[1])));
         }
     }
 
-    $SQL_BUFF .= "INSERT INTO description VALUES ('$lang', '" . SQLite3::escapeString($intro) . "', DATE(), '$charset');\n";
+    $SQL_BUFF .= "INSERT INTO description VALUES ('$lang', '$intro');\n";
 
     if (isset($txml)) {
         // Find all persons matching the pattern
@@ -349,15 +353,12 @@ function check_old_files($dir = '', $lang) {
         if (sizeof($entriesFiles) > 0 ) {
 
             foreach($entriesFiles as $file) {
-
                 $path_en = $DOCS . 'en/' . $dir . '/' . $file;
                 $path = $DOCS . $lang . $dir . '/' . $file;
 
                 if( !@is_file($path_en) ) {
-
                    $size = intval(filesize($path) / 1024);
                    $SQL_BUFF .= "INSERT INTO old_files VALUES ('$lang', '$dir', '$file', '$size');\n";
-
                 }
             }
         }
@@ -375,8 +376,7 @@ function check_old_files($dir = '', $lang) {
     closedir($dh);
 }
 
-function get_tags($file)
-{
+function get_tags($file) {
     // Read the first 500 chars. The comment should be at
     // the begining of the file
     $fp = @fopen($file, "r") or die("Unable to read $file.");
@@ -386,7 +386,6 @@ function get_tags($file)
     // No match before the preg
     $match = array ();
 
-
     // Check for the translations "revision tag"
     if (preg_match("/<!--\s*EN-Revision:\s*(\d+)\s*Maintainer:\s*(\\S*)\s*Status:\s*(.+)\s*-->/U",
     $line, $match)) {
@@ -407,8 +406,7 @@ function get_tags($file)
 
 } // get_tags() function end
 
-function get_original_rev($file)
-{
+function get_original_rev($file) {
     // Read the first 500 chars. The comment should be at
     // the begining of the file
     $fp = @fopen($file, "r") or die ("Unable to read $file.");
@@ -444,7 +442,6 @@ if (is_file($tmp_db)) {
     }
 }
 
-
 // 2 - Create the new database
 try {
     $db = new SQLite3($tmp_db);
diff --git a/www/revcheck.php b/www/revcheck.php
index 2fa104f..d899c46 100644
--- a/www/revcheck.php
+++ b/www/revcheck.php
@@ -26,7 +26,7 @@ $DBLANG = SQLITE_DIR . 'rev.php.sqlite';
 
 // Check if db connection can be established and if revcheck for requested lang exists
 if ($dbhandle = new SQLite3($DBLANG)) {
-    $check_lang_tmp = $dbhandle->query("SELECT COUNT(charset) AS count FROM description WHERE lang = '$lang'");
+    $check_lang_tmp = $dbhandle->query("SELECT COUNT(lang) AS count FROM description WHERE lang = '$lang'");
     $check_lang = $check_lang_tmp->fetchArray();
     if ($lang != 'en' && $check_lang['count'] < 0) {
         site_header();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.