]> git.wh0rd.org - tt-rss.git/commitdiff
misc headlines speedup
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 4 Aug 2011 15:38:25 +0000 (19:38 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Thu, 4 Aug 2011 15:54:44 +0000 (19:54 +0400)
backend.php
db-prefs.php
functions.php

index cdd1e653bc00d2e35387ceccf3da48fe9ad126c3..39befe202e9b2aba001c7cddbe2f8964a5ca04d3 100644 (file)
                        $disable_cache = $ret[3];
                        $vgroup_last_feed = $ret[4];
 
-                       $reply['headlines']['content'] = $ret[5];
-                       $reply['headlines']['toolbar'] = $ret[6];
+//                     if ($_REQUEST["debug"]) print_r($ret);
+
+                       $reply['headlines']['content'] =& $ret[5]['content'];
+                       $reply['headlines']['toolbar'] =& $ret[5]['toolbar'];
 
                        if ($_REQUEST["debug"]) $timing_info = print_checkpoint("05", $timing_info);
 
index cc2bb22e2e247c984c1fde7323346aa0a3a441b8..cf941cebe11daab3b53c97e535a78f97e7516a16 100644 (file)
                        $prefs_cache = false;
                }
 
+               if ($prefs_cache && !defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {
+                       if ($_SESSION["prefs_cache"] && @$_SESSION["prefs_cache"][$pref_name]) {
+                               $tuple = $_SESSION["prefs_cache"][$pref_name];
+                               return convert_pref_type($tuple["value"], $tuple["type"]);
+                       }
+               }
+
                if ($profile) {
                        $profile_qpart = "profile = '$profile' AND";
                } else {
 
                if (get_schema_version($link) < 63) $profile_qpart = "";
 
-               if ($prefs_cache && !defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {        
-                       if ($_SESSION["prefs_cache"] && @$_SESSION["prefs_cache"][$pref_name]) {
-                               $tuple = $_SESSION["prefs_cache"][$pref_name];
-                               return convert_pref_type($tuple["value"], $tuple["type"]);
-                       }
-               }
-
-               $result = db_query($link, "SELECT 
-                       value,ttrss_prefs_types.type_name as type_name 
-                       FROM 
+               $result = db_query($link, "SELECT
+                       value,ttrss_prefs_types.type_name as type_name
+                       FROM
                                ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types
-                       WHERE 
+                       WHERE
                                $profile_qpart
-                               ttrss_user_prefs.pref_name = '$pref_name' AND 
+                               ttrss_user_prefs.pref_name = '$pref_name' AND
                                ttrss_prefs_types.id = type_id AND
                                owner_uid = '$user_id' AND
                                ttrss_user_prefs.pref_name = ttrss_prefs.pref_name");
@@ -51,7 +51,7 @@
                        $value = db_fetch_result($result, 0, "value");
                        $type_name = db_fetch_result($result, 0, "type_name");
 
-                       if (!defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {        
+                       if (!defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {
                                if ($user_id = $_SESSION["uid"]) {
                                        $_SESSION["prefs_cache"][$pref_name]["type"] = $type_name;
                                        $_SESSION["prefs_cache"][$pref_name]["value"] = $value;
@@ -59,8 +59,8 @@
                        }
 
                        return convert_pref_type($value, $type_name);
-                       
-               } else {                
+
+               } else {
                        if ($die_on_error) {
                                die("Fatal error, unknown preferences key: $pref_name");
                        } else {
        }
 
        function convert_pref_type($value, $type_name) {
-               if ($type_name == "bool") {                     
-                       return $value == "true";                                
-               } else if ($type_name == "integer") {                   
-                       return sprintf("%d", $value);                           
+               if ($type_name == "bool") {
+                       return $value == "true";
+               } else if ($type_name == "integer") {
+                       return sprintf("%d", $value);
                } else {
                        return $value;
                }
@@ -99,8 +99,8 @@
 
                if (get_schema_version($link) < 63) $profile_qpart = "";
 
-               $result = db_query($link, "SELECT type_name 
-                       FROM ttrss_prefs,ttrss_prefs_types 
+               $result = db_query($link, "SELECT type_name
+                       FROM ttrss_prefs,ttrss_prefs_types
                        WHERE pref_name = '$key' AND type_id = ttrss_prefs_types.id");
 
                if (db_num_rows($result) > 0) {
                                $value = 'UTC';
                        }
 
-                       db_query($link, "UPDATE ttrss_user_prefs SET 
-                               value = '$value' WHERE pref_name = '$key' 
+                       db_query($link, "UPDATE ttrss_user_prefs SET
+                               value = '$value' WHERE pref_name = '$key'
                                        $profile_qpart
                                        AND owner_uid = " . $_SESSION["uid"]);
 
index c705e9ca127270036122c28afa7c5380806e1a21..7cd509ae710f43e20cdb89150d4de5bbfd4cccc7 100644 (file)
 
        $purifier = new HTMLPurifier($config);
 
+       $tz_offset = -1;
+       $utc_tz = new DateTimeZone('UTC');
+       $schema_version = false;
+
        /**
         * Print a timestamped debug message.
         *
                if (!$owner_uid) $owner_uid = $_SESSION['uid'];
                if (!$timestamp) $timestamp = '1970-01-01 0:00';
 
-               $user_tz_string = get_pref($link, 'USER_TIMEZONE', $owner_uid);
+               global $utc_tz;
+               global $tz_offset;
 
-               try {
-                       $user_tz = new DateTimeZone($user_tz_string);
-               } catch (Exception $e) {
-                       $user_tz = new DateTimeZone('UTC');
+               # We store date in UTC internally
+               $dt = new DateTime($timestamp, $utc_tz);
+
+               if ($tz_offset == -1) {
+
+                       $user_tz_string = get_pref($link, 'USER_TIMEZONE', $owner_uid);
+
+                       try {
+                               $user_tz = new DateTimeZone($user_tz_string);
+                       } catch (Exception $e) {
+                               $user_tz = $utc_tz;
+                       }
+
+                       $tz_offset = $user_tz->getOffset($dt);
                }
 
-               # We store date in UTC internally
-               $dt = new DateTime($timestamp, new DateTimeZone('UTC'));
-               $user_timestamp = $dt->format('U') + $user_tz->getOffset($dt);
+               $user_timestamp = $dt->format('U') + $tz_offset;
 
                if (!$no_smart_dt) {
                        return smart_date_time($link, $user_timestamp,
-                               $user_tz->getOffset($dt), $owner_uid);
+                               $tz_offset, $owner_uid);
                } else {
                        if ($long)
                                $format = get_pref($link, 'LONG_DATE_FORMAT', $owner_uid);
        // script when get_schema_version() is called on an obsolete session
        // created on a previous schema version.
        function get_schema_version($link, $nocache = false) {
-//             if (!$_SESSION["schema_version"] || $nocache) {
+               global $schema_version;
+
+               if (!$schema_version) {
                        $result = db_query($link, "SELECT schema_version FROM ttrss_version");
                        $version = db_fetch_result($result, 0, "schema_version");
-                       $_SESSION["schema_version"] = $version;
+                       $schema_version = $version;
                        return $version;
-//             } else {
-//                     return $_SESSION["schema_version"];
-//             }
+               } else {
+                       return $schema_version;
+               }
        }
 
        function sanity_check($link) {
                global $ERRORS;
 
                $error_code = 0;
-               $schema_version = get_schema_version($link);
+               $schema_version = get_schema_version($link, true);
 
                if ($schema_version != SCHEMA_VERSION) {
                        $error_code = 5;
 
                        $fresh_intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE") * 60 * 60;
 
+                       if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info);
+
                        while ($line = db_fetch_assoc($result)) {
 
                                $class = ($lnum % 2) ? "even" : "odd";
                                ++$lnum;
                        }
 
+                       if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info);
+
                } else {
                        $message = "";
 
                        }
                }
 
+               if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H2", $timing_info);
+
                return array($topmost_article_ids, $headlines_count, $feed, $disable_cache,
-                       $vgroup_last_feed, $reply['content'], $reply['toolbar']);
+                       $vgroup_last_feed, $reply);
        }
 
 // from here: http://www.roscripts.com/Create_tag_cloud-71.html