Browse Source

Fixes slow performance after one of the last pull requests.

pull/1647/head
Michael Vogel 6 years ago
parent
commit
bea70296bf
5 changed files with 35 additions and 14 deletions
  1. +1
    -1
      boot.php
  2. +8
    -2
      database.sql
  3. +5
    -0
      include/dbstructure.php
  4. +20
    -10
      include/items.php
  5. +1
    -1
      update.php

+ 1
- 1
boot.php View File

@ -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' );


+ 8
- 2
database.sql View 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 '',


+ 5
- 0
include/dbstructure.php View 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(


+ 20
- 10
include/items.php View 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);


+ 1
- 1
update.php View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1184 );
define( 'UPDATE_VERSION' , 1185 );
/**
*


Loading…
Cancel
Save