]> git.mxchange.org Git - friendica.git/commitdiff
Fixes slow performance after one of the last pull requests.
authorMichael Vogel <icarus@dabo.de>
Tue, 2 Jun 2015 20:07:39 +0000 (22:07 +0200)
committerMichael Vogel <icarus@dabo.de>
Tue, 2 Jun 2015 20:07:39 +0000 (22:07 +0200)
boot.php
database.sql
include/dbstructure.php
include/items.php
update.php

index 5994b2030ac21c5aa2c045ade6bcb0524758c945..465bec6775cb5f9e8be98392be2be5acab61b3c8 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -18,7 +18,7 @@ define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_CODENAME',     'Lily of the valley');
 define ( 'FRIENDICA_VERSION',      '3.4.0' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1184      );
+define ( 'DB_UPDATE_VERSION',      1185      );
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
 
index ab597825cd2ca653a228da81700258935c1ca705..b65dee657b0dc5acadb37afd287dd3ec3de36d76 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 3.4.0 (Lily of the valley)
--- DB_UPDATE_VERSION 1183
+-- DB_UPDATE_VERSION 1185
 -- ------------------------------------------
 
 
@@ -358,7 +358,12 @@ CREATE TABLE IF NOT EXISTS `group_member` (
 CREATE TABLE IF NOT EXISTS `guid` (
        `id` int(10) unsigned NOT NULL auto_increment PRIMARY KEY,
        `guid` varchar(255) NOT NULL DEFAULT '',
-        INDEX `guid` (`guid`)
+       `plink` varchar(255) NOT NULL DEFAULT '',
+       `uri` varchar(255) NOT NULL DEFAULT '',
+       `network` varchar(32) NOT NULL DEFAULT '',
+        INDEX `guid` (`guid`),
+        INDEX `plink` (`plink`),
+        INDEX `uri` (`uri`)
 ) DEFAULT CHARSET=utf8;
 
 --
@@ -587,6 +592,7 @@ CREATE TABLE IF NOT EXISTS `notify` (
        `msg` mediumtext NOT NULL,
        `uid` int(11) NOT NULL DEFAULT 0,
        `link` varchar(255) NOT NULL DEFAULT '',
+       `iid` int(11) NOT NULL DEFAULT 0,
        `parent` int(11) NOT NULL DEFAULT 0,
        `seen` tinyint(1) NOT NULL DEFAULT 0,
        `verb` varchar(255) NOT NULL DEFAULT '',
index 3a6e0705d0debf49105c2d9d2287aefb6c741497..0f81ee6249e8a2cb824acb85e0ebc6c6619dc229 100644 (file)
@@ -687,10 +687,15 @@ function db_definition() {
                        "fields" => array(
                                        "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
                                        "guid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+                                       "plink" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+                                       "uri" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
+                                       "network" => array("type" => "varchar(32)", "not null" => "1", "default" => ""),
                                        ),
                        "indexes" => array(
                                        "PRIMARY" => array("id"),
                                        "guid" => array("guid"),
+                                       "plink" => array("plink"),
+                                       "uri" => array("uri"),
                                        )
                        );
        $database["hook"] = array(
index 9346d9f16d2b56bb8f85b064ff306b14f277786b..bd353c5bf3ab7ec15fae6ea1fff77e450c109c33 100644 (file)
@@ -1099,7 +1099,15 @@ function encode_rel_links($links) {
        return xmlify($o);
 }
 
+function add_guid($item) {
+       $r = q("SELECT `guid` FROM `guid` WHERE `guid` = '%s' LIMIT 1", dbesc($item["guid"]));
+       if ($r)
+               return;
 
+       q("INSERT INTO `guid` (`guid`,`plink`,`uri`,`network`) VALUES ('%s','%s','%s','%s')",
+               dbesc($item["guid"]), dbesc($item["plink"]),
+               dbesc($item["uri"]), dbesc($item["network"]));
+}
 
 function item_store($arr,$force_parent = false, $notify = false, $dontcache = false) {
 
@@ -1166,13 +1174,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                        }
                }
        }
-/*
+
        // If there is no guid then take the same guid that was taken before for the same uri
-       if ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
+       if ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "") AND (trim($arr['network']) != "")) {
                logger('item_store: checking for an existing guid for uri '.$arr['uri'], LOGGER_DEBUG);
-               $r = q("SELECT `guid` FROM `item` WHERE `uri` = '%s' AND `guid` != '' LIMIT 1",
-                       dbesc(trim($arr['uri']))
-               );
+               $r = q("SELECT `guid` FROM `guid` WHERE `uri` = '%s' AND `network` = '%s' LIMIT 1",
+                       dbesc(trim($arr['uri'])), dbesc(trim($arr['network'])));
 
                if(count($r)) {
                        $arr['guid'] = $r[0]["guid"];
@@ -1181,18 +1188,17 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
        }
 
        // If there is no guid then take the same guid that was taken before for the same plink
-       if ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
+       if ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "") AND (trim($arr['network']) != "")) {
                logger('item_store: checking for an existing guid for plink '.$arr['plink'], LOGGER_DEBUG);
-               $r = q("SELECT `guid` FROM `item` WHERE `plink` = '%s' AND `guid` != '' LIMIT 1",
-                       dbesc(trim($arr['plink']))
-               );
+               $r = q("SELECT `guid` FROM `guid` WHERE `plink` = '%s' AND `network` = '%s' LIMIT 1",
+                       dbesc(trim($arr['plink'])), dbesc(trim($arr['network'])));
 
                if(count($r)) {
                        $arr['guid'] = $r[0]["guid"];
                        logger('item_store: found guid '.$arr['guid'].' for plink '.$arr['plink'], LOGGER_DEBUG);
                }
        }
-*/
+
        // Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
        // Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
        //if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
@@ -1476,6 +1482,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
        );
 
        if(count($r)) {
+
+               // Store the guid and other relevant data
+               add_guid($arr);
+
                $current_post = $r[0]['id'];
                logger('item_store: created item ' . $current_post);
 
index ca86c8557e494b5328af2c93fb1db3fa405b1781..c182eb590e1fbe49b3beb605c6392f1940875d89 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1184 );
+define( 'UPDATE_VERSION' , 1185 );
 
 /**
  *