From 37ce5ce88624163c8a748bfe16a2def5c18a53dc Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 20 Dec 2016 07:14:59 +0000 Subject: [PATCH 01/23] Remove indexes that we don't use anymore --- include/dbstructure.php | 42 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 94e8da4a44..5450c31f69 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -905,24 +905,24 @@ function db_definition($charset) { "uid_created" => array("uid","created"), "uid_unseen_contactid" => array("uid","unseen","contact-id"), "uid_network_received" => array("uid","network","received"), - "uid_received" => array("uid","received"), + // "uid_received" => array("uid","received"), "uid_network_commented" => array("uid","network","commented"), - "uid_commented" => array("uid","commented"), - "uid_title" => array("uid","title"), + // "uid_commented" => array("uid","commented"), + // "uid_title" => array("uid","title"), "uid_thrparent" => array("uid","thr-parent"), "uid_parenturi" => array("uid","parent-uri"), "uid_contactid_id" => array("uid","contact-id","id"), "uid_contactid_created" => array("uid","contact-id","created"), - "gcontactid_uid_created" => array("gcontact-id","uid","created"), + // "gcontactid_uid_created" => array("gcontact-id","uid","created"), "authorid_created" => array("author-id","created"), - "ownerid_created" => array("owner-id","created"), - "wall_body" => array("wall","body(6)"), - "uid_visible_moderated_created" => array("uid","visible","moderated","created"), + // "ownerid_created" => array("owner-id","created"), + // "wall_body" => array("wall","body(6)"), + // "uid_visible_moderated_created" => array("uid","visible","moderated","created"), "uid_uri" => array("uid", "uri"), "uid_wall_created" => array("uid","wall","created"), - "resource-id" => array("resource-id"), + // "resource-id" => array("resource-id"), "uid_type" => array("uid","type"), - "uid_starred_id" => array("uid","starred", "id"), + // "uid_starred_id" => array("uid","starred", "id"), "contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"), "uid_wall_parent_created" => array("uid","wall","parent","created"), "uid_type_changed" => array("uid","type","changed"), @@ -931,7 +931,7 @@ function db_definition($charset) { "uid_wall_changed" => array("uid","wall","changed"), "uid_eventid" => array("uid","event-id"), "uid_authorlink" => array("uid","author-link"), - "uid_ownerlink" => array("uid","owner-link"), + // "uid_ownerlink" => array("uid","owner-link"), ) ); $database["item_id"] = array( @@ -984,9 +984,9 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), - "guid" => array("guid"), - "convid" => array("convid"), - "reply" => array("reply"), + // "guid" => array("guid"), + // "convid" => array("convid"), + // "reply" => array("reply"), "uri" => array("uri"), "parent-uri" => array("parent-uri"), ) @@ -1058,7 +1058,7 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "master-parent-item" => array("master-parent-item"), - "receiver-uid" => array("receiver-uid"), + // "receiver-uid" => array("receiver-uid"), ) ); $database["oembed"] = array( @@ -1129,7 +1129,7 @@ function db_definition($charset) { "uid_profile" => array("uid", "profile"), "uid_album_created" => array("uid", "album", "created"), "resource-id" => array("resource-id"), - "guid" => array("guid"), + // "guid" => array("guid"), ) ); $database["poll"] = array( @@ -1268,7 +1268,7 @@ function db_definition($charset) { "cid" => array("cid"), "created" => array("created"), "last" => array("last"), - "network" => array("network"), + // "network" => array("network"), "batch" => array("batch"), ) ); @@ -1362,7 +1362,7 @@ function db_definition($charset) { "uid_term_tid" => array("uid","term","tid"), "type_term" => array("type","term"), "uid_otype_type_term_global_created" => array("uid","otype","type","term","global","created"), - "otype_type_term_tid" => array("otype","type","term","tid"), + // "otype_type_term_tid" => array("otype","type","term","tid"), "uid_otype_type_url" => array("uid","otype","type","url"), "guid" => array("guid"), ) @@ -1404,11 +1404,11 @@ function db_definition($charset) { "uid_network_created" => array("uid","network","created"), "uid_contactid_commented" => array("uid","contact-id","commented"), "uid_contactid_created" => array("uid","contact-id","created"), - "uid_gcontactid_commented" => array("uid","gcontact-id","commented"), - "uid_gcontactid_created" => array("uid","gcontact-id","created"), - "wall_private_received" => array("wall","private","received"), + // "uid_gcontactid_commented" => array("uid","gcontact-id","commented"), + // "uid_gcontactid_created" => array("uid","gcontact-id","created"), + // "wall_private_received" => array("wall","private","received"), "uid_created" => array("uid","created"), - "uid_commented" => array("uid","commented"), + // "uid_commented" => array("uid","commented"), ) ); $database["tokens"] = array( From 44d966574dc2edc58e1f5c0402a1956d4d554235 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 4 Jan 2017 19:13:50 +0000 Subject: [PATCH 02/23] Some more indexes and other query improvements --- include/dbclean.php | 7 ++++- include/dbstructure.php | 64 ++++++++++++++++++++--------------------- include/diaspora.php | 26 +++++++++++++++-- 3 files changed, 61 insertions(+), 36 deletions(-) diff --git a/include/dbclean.php b/include/dbclean.php index 0baece8168..1f0e5834f7 100644 --- a/include/dbclean.php +++ b/include/dbclean.php @@ -8,8 +8,9 @@ require_once("boot.php"); function dbclean_run(&$argv, &$argc) { global $a, $db; - if (is_null($a)) + if (is_null($a)) { $a = new App; + } if (is_null($db)) { @include(".htconfig.php"); @@ -21,6 +22,10 @@ function dbclean_run(&$argv, &$argc) { load_config('config'); load_config('system'); + if (!get_config("system", "dbclean")) { + return; + } + if ($argc == 2) { $stage = intval($argv[1]); } else { diff --git a/include/dbstructure.php b/include/dbstructure.php index 2dd7a6f182..706b3650d8 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -538,7 +538,7 @@ function db_definition($charset) { "site-pubkey" => array("type" => "text"), "issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), + "url" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "collation" => "bin"), "nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -587,8 +587,8 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), - "addr_uid" => array("addr", "uid"), - "nurl" => array("nurl"), + "addr_uid" => array("addr(32)", "uid"), + "nurl" => array("nurl(32)"), ) ); $database["conv"] = array( @@ -669,7 +669,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "addr" => array("addr"), + "addr" => array("addr(32)"), ) ); $database["ffinder"] = array( @@ -692,7 +692,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "server" => array("server"), + "server" => array("server(32)"), ) ); $database["fsuggest"] = array( @@ -754,10 +754,10 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "nurl" => array("nurl"), - "name" => array("name"), - "nick" => array("nick"), - "addr" => array("addr"), + "nurl" => array("nurl(32)"), + "name" => array("name(32)"), + "nick" => array("nick(32)"), + "addr" => array("addr(32)"), "updated" => array("updated"), ) ); @@ -822,7 +822,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "nurl" => array("nurl"), + "nurl" => array("nurl(32)"), ) ); $database["hook"] = array( @@ -935,10 +935,10 @@ function db_definition($charset) { "uid_created" => array("uid","created"), "uid_unseen_contactid" => array("uid","unseen","contact-id"), "uid_network_received" => array("uid","network","received"), - // "uid_received" => array("uid","received"), + "uid_received" => array("uid","received"), "uid_network_commented" => array("uid","network","commented"), // "uid_commented" => array("uid","commented"), - // "uid_title" => array("uid","title"), + "uid_title" => array("uid","title"), "uid_thrparent" => array("uid","thr-parent"), "uid_parenturi" => array("uid","parent-uri"), "uid_contactid_id" => array("uid","contact-id","id"), @@ -950,18 +950,18 @@ function db_definition($charset) { // "uid_visible_moderated_created" => array("uid","visible","moderated","created"), "uid_uri" => array("uid", "uri"), "uid_wall_created" => array("uid","wall","created"), - // "resource-id" => array("resource-id"), + "resource-id" => array("resource-id"), "uid_type" => array("uid","type"), // "uid_starred_id" => array("uid","starred", "id"), "contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"), - "uid_wall_parent_created" => array("uid","wall","parent","created"), + // "uid_wall_parent_created" => array("uid","wall","parent","created"), "uid_type_changed" => array("uid","type","changed"), "contactid_verb" => array("contact-id","verb"), "deleted_changed" => array("deleted","changed"), "uid_wall_changed" => array("uid","wall","changed"), "uid_eventid" => array("uid","event-id"), "uid_authorlink" => array("uid","author-link"), - // "uid_ownerlink" => array("uid","owner-link"), + "uid_ownerlink" => array("uid","owner-link"), ) ); $database["item_id"] = array( @@ -976,7 +976,7 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), "sid" => array("sid"), - "service" => array("service"), + "service" => array("service(32)"), "iid" => array("iid"), ) ); @@ -1015,10 +1015,10 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), // "guid" => array("guid"), - // "convid" => array("convid"), + "convid" => array("convid"), // "reply" => array("reply"), "uri" => array("uri"), - "parent-uri" => array("parent-uri"), + "parent-uri" => array("parent-uri(64)"), ) ); $database["mailacct"] = array( @@ -1157,8 +1157,8 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid_contactid" => array("uid", "contact-id"), "uid_profile" => array("uid", "profile"), - "uid_album_created" => array("uid", "album", "created"), - "resource-id" => array("resource-id"), + "uid_album_created" => array("uid", "album(32)", "created"), + "resource-id" => array("resource-id(64)"), // "guid" => array("guid"), ) ); @@ -1252,7 +1252,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "hometown" => array("hometown"), + // "hometown" => array("hometown(32)"), ) ); $database["profile_check"] = array( @@ -1298,7 +1298,7 @@ function db_definition($charset) { "cid" => array("cid"), "created" => array("created"), "last" => array("last"), - // "network" => array("network"), + "network" => array("network"), "batch" => array("batch"), ) ); @@ -1325,7 +1325,7 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), - "term" => array("term"), + // "term" => array("term(32)"), ) ); $database["session"] = array( @@ -1337,7 +1337,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "sid" => array("sid"), + "sid" => array("sid(64)"), "expire" => array("expire"), ) ); @@ -1389,12 +1389,12 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("tid"), "oid_otype_type_term" => array("oid","otype","type","term"), - "uid_term_tid" => array("uid","term","tid"), - "type_term" => array("type","term"), - "uid_otype_type_term_global_created" => array("uid","otype","type","term","global","created"), + "uid_term_tid" => array("uid","term(32)","tid"), + "type_term" => array("type","term(32)"), + "uid_otype_type_term_global_created" => array("uid","otype","type","term(32)","global","created"), // "otype_type_term_tid" => array("otype","type","term","tid"), - "uid_otype_type_url" => array("uid","otype","type","url"), - "guid" => array("guid"), + "uid_otype_type_url" => array("uid","otype","type","url(64)"), + "guid" => array("guid(64)"), ) ); $database["thread"] = array( @@ -1438,7 +1438,7 @@ function db_definition($charset) { // "uid_gcontactid_created" => array("uid","gcontact-id","created"), // "wall_private_received" => array("wall","private","received"), "uid_created" => array("uid","created"), - // "uid_commented" => array("uid","commented"), + "uid_commented" => array("uid","commented"), ) ); $database["tokens"] = array( @@ -1502,7 +1502,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("uid"), - "nickname" => array("nickname"), + "nickname" => array("nickname(32)"), ) ); $database["userd"] = array( @@ -1512,7 +1512,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "username" => array("username"), + "username" => array("username(32)"), ) ); $database["workerqueue"] = array( diff --git a/include/diaspora.php b/include/diaspora.php index fbfc497b59..1cb4f0e922 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -736,13 +736,30 @@ class Diaspora { * @return The contact id */ private static function contact_by_handle($uid, $handle) { + + // First do a direct search on the contact table $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", intval($uid), dbesc($handle) ); - if ($r) + if ($r) { + //logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - first try", LOGGER_DEBUG); return $r[0]; + } else { + // We haven't found it? + // We use another function for it that will possibly create a contact entry + $cid = get_contact($handle, $uid); + + if ($cid > 0) { + $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid)); + + if (dbm::is_result($r)) { + logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - second try", LOGGER_DEBUG); + return $r[0]; + } + } + } $handle_parts = explode("@", $handle); $nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0]; @@ -751,9 +768,12 @@ class Diaspora { intval($uid), dbesc($nurl_sql) ); - if($r) + if(dbm::is_result($r)) { + logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - third try", LOGGER_DEBUG); return $r[0]; + } + logger("Haven't found contact for user ".$uid." and handle ".$handle, LOGGER_DEBUG); return false; } @@ -828,7 +848,7 @@ class Diaspora { * @return int|bool message id if the message already was stored into the system - or false. */ private static function message_exists($uid, $guid) { - $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `guid` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($uid), dbesc($guid) ); From c2213760412f6d178d77451d69ae467534042457 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 4 Jan 2017 23:12:28 +0000 Subject: [PATCH 03/23] Some notification thingy --- include/dbstructure.php | 7 +++++-- include/enotify.php | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 706b3650d8..646fc408cf 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -538,7 +538,7 @@ function db_definition($charset) { "site-pubkey" => array("type" => "text"), "issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "url" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "collation" => "bin"), + "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1074,7 +1074,10 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "uid" => array("uid"), + "uid_hash" => array("uid", "hash"), + "uid_seen" => array("uid", "seen"), + "uid_type_link" => array("uid", "type", "link"), + "uid_link" => array("uid", "link"), ) ); $database["notify-threads"] = array( diff --git a/include/enotify.php b/include/enotify.php index aa29e117a6..ebc27309db 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -105,7 +105,7 @@ function notification($params) { // If so don't create a second notification $p = null; - $p = q("SELECT `id` FROM `notify` WHERE (`type` = %d OR `type` = %d OR `type` = %d) AND `link` = '%s' AND `uid` = %d LIMIT 1", + $p = q("SELECT `id` FROM `notify` WHERE `type` IN (%d, %d, %d) AND `link` = '%s' AND `uid` = %d LIMIT 1", intval(NOTIFY_TAGSELF), intval(NOTIFY_COMMENT), intval(NOTIFY_SHARE), @@ -472,7 +472,7 @@ function notification($params) { // After we've stored everything, look again to see if there are any duplicates and if so remove them $p = null; - $p = q("SELECT `id` FROM `notify` WHERE (`type` = %d OR `type` = %d) AND `link` = '%s' AND `uid` = %d ORDER BY `id`", + $p = q("SELECT `id` FROM `notify` WHERE `type` IN (%d, %d) AND `link` = '%s' AND `uid` = %d ORDER BY `id`", intval(NOTIFY_TAGSELF), intval(NOTIFY_COMMENT), dbesc($params['link']), From cefb36fb67d88dcce9374aa7332770cccd861bf3 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 4 Jan 2017 23:28:51 +0000 Subject: [PATCH 04/23] Some more indexes on the contact table --- include/dbstructure.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 646fc408cf..bb77579142 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -588,7 +588,8 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), "addr_uid" => array("addr(32)", "uid"), - "nurl" => array("nurl(32)"), + "nurl_uid" => array("nurl(32)", "uid"), + "nick_uid" => array("nick(32)", "uid"), ) ); $database["conv"] = array( From 00d7835ba6c8538fa5f9e65408b19535fbfb0b38 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 07:12:13 +0000 Subject: [PATCH 05/23] Some more contact indexes --- include/dbstructure.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/dbstructure.php b/include/dbstructure.php index bb77579142..46681c0d35 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -587,6 +587,8 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), + "uid_batch" => array("uid", "batch(64)"), + "uid_network" => array("uid", "network"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), "nick_uid" => array("nick(32)", "uid"), From db1c6c06d619a7bd557d00e3b865063379316d9a Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 07:30:10 +0000 Subject: [PATCH 06/23] Finding the best index ... --- include/dbstructure.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 46681c0d35..2aea6ec58e 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1078,9 +1078,10 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid_hash" => array("uid", "hash"), - "uid_seen" => array("uid", "seen"), + "uid_seen_date" => array("uid", "seen", "date"), "uid_type_link" => array("uid", "type", "link"), "uid_link" => array("uid", "link"), + "uid_date" => array("uid", "date"), ) ); $database["notify-threads"] = array( From a92c5f464d3f0ee25a539607ca5a4f1dd7f3297f Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 08:02:21 +0000 Subject: [PATCH 07/23] Hopefully this it it ... --- include/dbstructure.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/dbstructure.php b/include/dbstructure.php index 2aea6ec58e..eaa0202c5b 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -587,6 +587,7 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), + "uid_self" => array("uid", "self"), "uid_batch" => array("uid", "batch(64)"), "uid_network" => array("uid", "network"), "addr_uid" => array("addr(32)", "uid"), From a4e437b56fbbcb43ce7bdea291dae04f52bab184 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 09:10:02 +0000 Subject: [PATCH 08/23] Contact testing --- include/dbstructure.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index eaa0202c5b..f0dad26796 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -588,7 +588,7 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), "uid_self" => array("uid", "self"), - "uid_batch" => array("uid", "batch(64)"), + "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"), "uid_network" => array("uid", "network"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), From 9c7a2d2f9ac360ee07a855bab244b17807ae458b Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 09:32:16 +0000 Subject: [PATCH 09/23] Another index --- include/dbstructure.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/dbstructure.php b/include/dbstructure.php index f0dad26796..238fd1f360 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -592,6 +592,7 @@ function db_definition($charset) { "uid_network" => array("uid", "network"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), + "url_uid" => array("url(32)", "uid"), "nick_uid" => array("nick(32)", "uid"), ) ); From 7aaf91a620cff8303d3052f1beb973d43d670431 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 13:16:27 +0000 Subject: [PATCH 10/23] Removing and adding some indexes --- include/dbstructure.php | 4 +--- include/redir.php | 14 +++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 238fd1f360..f7f44fd605 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -589,10 +589,8 @@ function db_definition($charset) { "uid" => array("uid"), "uid_self" => array("uid", "self"), "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"), - "uid_network" => array("uid", "network"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), - "url_uid" => array("url(32)", "uid"), "nick_uid" => array("nick(32)", "uid"), ) ); @@ -1022,7 +1020,7 @@ function db_definition($charset) { // "guid" => array("guid"), "convid" => array("convid"), // "reply" => array("reply"), - "uri" => array("uri"), + "uri" => array("uri(64)"), "parent-uri" => array("parent-uri(64)"), ) ); diff --git a/include/redir.php b/include/redir.php index d8bb764396..bbe8a11ec4 100644 --- a/include/redir.php +++ b/include/redir.php @@ -27,13 +27,13 @@ function auto_redir(&$a, $contact_nick) { $baseurl = substr($baseurl, $domain_st + 3); $nurl = normalise_link($baseurl); - - $r = q("SELECT id FROM contact WHERE uid = ( SELECT uid FROM user WHERE nickname = '%s' LIMIT 1 ) - AND nick = '%s' AND self = 0 AND ( url LIKE '%%%s%%' or nurl LIKE '%%%s%%' ) AND blocked = 0 AND pending = 0 LIMIT 1", - dbesc($contact_nick), - dbesc($a->user['nickname']), - dbesc($baseurl), - dbesc($nurl) + /// @todo Why is there a query for "nurl" *and* "nurl"? Especially this normalising is strange. + $r = q("SELECT `id` FROM `contact` WHERE `uid` = (SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1) + AND `nick` = '%s' AND NOT `self` AND (`url` LIKE '%%%s%%' OR `nurl` LIKE '%%%s%%') AND NOT `blocked` AND NOT `pending` LIMIT 1", + dbesc($contact_nick), + dbesc($a->user['nickname']), + dbesc($baseurl), + dbesc($nurl) ); if ((! dbm::is_result($r)) || $r[0]['id'] == remote_user()) { From 6cdccbe2f67244213cf8c50e64ab1c6eed1d0e59 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 17:48:51 +0000 Subject: [PATCH 11/23] Will we now find the best index fort the contact? --- include/dbstructure.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/dbstructure.php b/include/dbstructure.php index f7f44fd605..7b3be5a31a 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -588,6 +588,8 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), "uid_self" => array("uid", "self"), + "uid_batch" => array("uid", "batch"), + "uid_pending" => array("uid", "pending"), "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), From 2deb2b637b27e145f0ad49ac2bf07f12de53040d Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 22:23:00 +0000 Subject: [PATCH 12/23] Some new indexes and some removed. --- include/dbstructure.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 7b3be5a31a..7b9b092c49 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -586,11 +586,13 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "uid" => array("uid"), + "uid_name" => array("uid", "name"), "uid_self" => array("uid", "self"), - "uid_batch" => array("uid", "batch"), + "alias_uid" => array("alias(32)", "uid"), "uid_pending" => array("uid", "pending"), - "uid_network_batch_archive" => array("uid", "network", "batch(64)", "archive"), + "uid_blocked" => array("uid", "blocked"), + "uid_rel_network_poll" => array("uid", "rel", "network", "poll(64)", "archive"), + "uid_network_batch" => array("uid", "network", "batch(64)"), "addr_uid" => array("addr(32)", "uid"), "nurl_uid" => array("nurl(32)", "uid"), "nick_uid" => array("nick(32)", "uid"), @@ -649,7 +651,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "uid" => array("uid"), + "uid_start" => array("uid", "start"), ) ); $database["fcontact"] = array( @@ -777,7 +779,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "cid_uid_gcid_zcid" => array("cid","uid","gcid","zcid"), + "cid_uid_gcid_zcid" => array("UNIQUE", "cid","uid","gcid","zcid"), "gcid" => array("gcid"), "zcid" => array("zcid"), ) @@ -804,7 +806,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "uid_gid_contactid" => array("uid","gid","contact-id"), + "uid_gid_contactid" => array("UNIQUE", "uid","gid","contact-id"), ) ); $database["gserver"] = array( @@ -1019,6 +1021,7 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), + "uid_seen" => array("uid", "seen"), // "guid" => array("guid"), "convid" => array("convid"), // "reply" => array("reply"), From ff3728be47cd02226a069f410cb4b85d5b23f291 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 22:51:31 +0000 Subject: [PATCH 13/23] Cleaning up the stuff --- include/dbstructure.php | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 7b9b092c49..8f47dc16e9 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -944,24 +944,17 @@ function db_definition($charset) { "uid_network_received" => array("uid","network","received"), "uid_received" => array("uid","received"), "uid_network_commented" => array("uid","network","commented"), - // "uid_commented" => array("uid","commented"), "uid_title" => array("uid","title"), "uid_thrparent" => array("uid","thr-parent"), "uid_parenturi" => array("uid","parent-uri"), "uid_contactid_id" => array("uid","contact-id","id"), "uid_contactid_created" => array("uid","contact-id","created"), - // "gcontactid_uid_created" => array("gcontact-id","uid","created"), "authorid_created" => array("author-id","created"), - // "ownerid_created" => array("owner-id","created"), - // "wall_body" => array("wall","body(6)"), - // "uid_visible_moderated_created" => array("uid","visible","moderated","created"), "uid_uri" => array("uid", "uri"), "uid_wall_created" => array("uid","wall","created"), "resource-id" => array("resource-id"), "uid_type" => array("uid","type"), - // "uid_starred_id" => array("uid","starred", "id"), "contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"), - // "uid_wall_parent_created" => array("uid","wall","parent","created"), "uid_type_changed" => array("uid","type","changed"), "contactid_verb" => array("contact-id","verb"), "deleted_changed" => array("deleted","changed"), @@ -1022,9 +1015,7 @@ function db_definition($charset) { "PRIMARY" => array("id"), "uid" => array("uid"), "uid_seen" => array("uid", "seen"), - // "guid" => array("guid"), "convid" => array("convid"), - // "reply" => array("reply"), "uri" => array("uri(64)"), "parent-uri" => array("parent-uri(64)"), ) @@ -1100,7 +1091,6 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "master-parent-item" => array("master-parent-item"), - // "receiver-uid" => array("receiver-uid"), ) ); $database["oembed"] = array( @@ -1171,7 +1161,6 @@ function db_definition($charset) { "uid_profile" => array("uid", "profile"), "uid_album_created" => array("uid", "album(32)", "created"), "resource-id" => array("resource-id(64)"), - // "guid" => array("guid"), ) ); $database["poll"] = array( @@ -1264,7 +1253,6 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - // "hometown" => array("hometown(32)"), ) ); $database["profile_check"] = array( @@ -1337,7 +1325,6 @@ function db_definition($charset) { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), - // "term" => array("term(32)"), ) ); $database["session"] = array( @@ -1404,7 +1391,6 @@ function db_definition($charset) { "uid_term_tid" => array("uid","term(32)","tid"), "type_term" => array("type","term(32)"), "uid_otype_type_term_global_created" => array("uid","otype","type","term(32)","global","created"), - // "otype_type_term_tid" => array("otype","type","term","tid"), "uid_otype_type_url" => array("uid","otype","type","url(64)"), "guid" => array("guid(64)"), ) @@ -1446,9 +1432,6 @@ function db_definition($charset) { "uid_network_created" => array("uid","network","created"), "uid_contactid_commented" => array("uid","contact-id","commented"), "uid_contactid_created" => array("uid","contact-id","created"), - // "uid_gcontactid_commented" => array("uid","gcontact-id","commented"), - // "uid_gcontactid_created" => array("uid","gcontact-id","created"), - // "wall_private_received" => array("wall","private","received"), "uid_created" => array("uid","created"), "uid_commented" => array("uid","commented"), ) From 58c229031edeeb6c230ac73837e12a4d95ebbe79 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 5 Jan 2017 22:56:49 +0000 Subject: [PATCH 14/23] Now for the database version --- boot.php | 2 +- update.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index aad8813766..5bf535ed91 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_VERSION', '3.5.1-dev' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1211 ); +define ( 'DB_UPDATE_VERSION', 1212 ); /** * @brief Constant with a HTML line break. diff --git a/update.php b/update.php index 3bd9cbe610..058536d821 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Fri, 6 Jan 2017 06:37:27 +0000 Subject: [PATCH 15/23] Removed some removed indexes --- include/Contact.php | 2 +- mod/community.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/Contact.php b/include/Contact.php index b1f63cbdfd..ea8a5f108a 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -636,7 +636,7 @@ function posts_from_gcontact($a, $gcontact_id) { $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, `author-name` AS `name`, `owner-avatar` AS `photo`, `owner-link` AS `url`, `owner-avatar` AS `thumb` - FROM `item` FORCE INDEX (`gcontactid_uid_created`) + FROM `item` WHERE `gcontact-id` = %d AND $sql AND NOT `deleted` AND NOT `moderated` AND `visible` ORDER BY `item`.`created` DESC LIMIT %d, %d", diff --git a/mod/community.php b/mod/community.php index d7fd2bb933..b1b5c2fd29 100644 --- a/mod/community.php +++ b/mod/community.php @@ -121,7 +121,7 @@ function community_getitems($start, $itemspage) { return(community_getpublicitems($start, $itemspage)); $r = qu("SELECT %s - FROM `thread` FORCE INDEX (`wall_private_received`) + FROM `thread` INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall` INNER JOIN `item` ON `item`.`id` = `thread`.`iid` AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' From 680b16d036a1dcdd72a6b960ae2a0f285d9d0223 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 6 Jan 2017 07:03:35 +0000 Subject: [PATCH 16/23] Added documentation --- doc/htconfig.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/htconfig.md b/doc/htconfig.md index fb257c3dac..90bf78b872 100644 --- a/doc/htconfig.md +++ b/doc/htconfig.md @@ -25,6 +25,7 @@ Example: To set the directory value please add this line to your .htconfig.php: * **allowed_link_protocols** (Array) - Allowed protocols in links URLs, add at your own risk. http is always allowed. * **birthday_input_format** - Default value is "ymd". * **block_local_dir** (Boolean) - Blocks the access to the directory of the local users. +* **dbclean** (Boolean) - Enable the automatic database cleanup process * **default_service_class** - * **delivery_batch_count** - Number of deliveries per process. Default value is 1. (Disabled when using the worker) * **diaspora_test** (Boolean) - For development only. Disables the message transfer. From cb5df4d715a9710c2957ad4928762e90d5548298 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 6 Jan 2017 13:30:12 +0000 Subject: [PATCH 17/23] Some corrections --- include/diaspora.php | 9 +++------ include/redir.php | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 1cb4f0e922..2b9e61331f 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -743,8 +743,7 @@ class Diaspora { dbesc($handle) ); - if ($r) { - //logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - first try", LOGGER_DEBUG); + if (dbm::is_result($r)) { return $r[0]; } else { // We haven't found it? @@ -755,7 +754,6 @@ class Diaspora { $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid)); if (dbm::is_result($r)) { - logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - second try", LOGGER_DEBUG); return $r[0]; } } @@ -769,7 +767,6 @@ class Diaspora { dbesc($nurl_sql) ); if(dbm::is_result($r)) { - logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - third try", LOGGER_DEBUG); return $r[0]; } @@ -848,12 +845,12 @@ class Diaspora { * @return int|bool message id if the message already was stored into the system - or false. */ private static function message_exists($uid, $guid) { - $r = q("SELECT `guid` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($uid), dbesc($guid) ); - if ($r) { + if (dbm::is_result($r)) { logger("message ".$guid." already exists for user ".$uid); return $r[0]["id"]; } diff --git a/include/redir.php b/include/redir.php index bbe8a11ec4..d29159ed03 100644 --- a/include/redir.php +++ b/include/redir.php @@ -27,7 +27,7 @@ function auto_redir(&$a, $contact_nick) { $baseurl = substr($baseurl, $domain_st + 3); $nurl = normalise_link($baseurl); - /// @todo Why is there a query for "nurl" *and* "nurl"? Especially this normalising is strange. + /// @todo Why is there a query for "url" *and* "nurl"? Especially this normalising is strange. $r = q("SELECT `id` FROM `contact` WHERE `uid` = (SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1) AND `nick` = '%s' AND NOT `self` AND (`url` LIKE '%%%s%%' OR `nurl` LIKE '%%%s%%') AND NOT `blocked` AND NOT `pending` LIMIT 1", dbesc($contact_nick), From 414c5ddae08ca3a49ce570b481f2656fd0a58ea0 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 7 Jan 2017 09:05:52 +0000 Subject: [PATCH 18/23] Use Config class/Option to deactivate the count on albums --- doc/htconfig.md | 3 ++- include/dbclean.php | 6 +++++- include/photos.php | 35 +++++++++++++++++++++++++---------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/doc/htconfig.md b/doc/htconfig.md index 90bf78b872..05a2a7a963 100644 --- a/doc/htconfig.md +++ b/doc/htconfig.md @@ -46,7 +46,8 @@ Example: To set the directory value please add this line to your .htconfig.php: * **max_processes_frontend** - Maximum number of concurrent database processes for foreground tasks. Default value is 20. * **memcache** (Boolean) - Use memcache. To use memcache the PECL extension "memcache" has to be installed and activated. * **memcache_host** - Hostname of the memcache daemon. Default is '127.0.0.1'. -* **memcache_port** - Portnumberof the memcache daemon. Default is 11211. +* **memcache_port** - Portnumber of the memcache daemon. Default is 11211. +* **no_count** (Boolean) - Don't do count calculations (currently only when showing albums) * **no_oembed** (Boolean) - Don't use OEmbed to fetch more information about a link. * **no_oembed_rich_content** (Boolean) - Don't show the rich content (e.g. embedded PDF). * **no_smilies** (Boolean) - Don't show smilies. diff --git a/include/dbclean.php b/include/dbclean.php index 1f0e5834f7..29c4173080 100644 --- a/include/dbclean.php +++ b/include/dbclean.php @@ -3,6 +3,10 @@ * @file include/dbclean.php * @brief The script is called from time to time to clean the database entries and remove orphaned data. */ + +use \Friendica\Core\Config; +use \Friendica\Core\PConfig; + require_once("boot.php"); function dbclean_run(&$argv, &$argc) { @@ -22,7 +26,7 @@ function dbclean_run(&$argv, &$argc) { load_config('config'); load_config('system'); - if (!get_config("system", "dbclean")) { + if (!Config::get('system', 'dbclean', false)) { return; } diff --git a/include/photos.php b/include/photos.php index 2beb23ffaf..7cdd14bf6d 100644 --- a/include/photos.php +++ b/include/photos.php @@ -4,6 +4,9 @@ * @brief Functions related to photo handling. */ +use \Friendica\Core\Config; +use \Friendica\Core\PConfig; + function getGps($exifCoord, $hemi) { $degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0; $minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0; @@ -42,16 +45,28 @@ function photo_albums($uid, $update = false) { $key = "photo_albums:".$uid.":".local_user().":".remote_user(); $albums = Cache::get($key); if (is_null($albums) OR $update) { - /// @todo This query needs to be renewed. It is really slow - // At this time we just store the data in the cache - $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album` - FROM `photo` USE INDEX (`uid_album_created`) - WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra - GROUP BY `album` ORDER BY `created` DESC", - intval($uid), - dbesc('Contact Photos'), - dbesc(t('Contact Photos')) - ); + if (!Config::get('system', 'no_count', false)) { + /// @todo This query needs to be renewed. It is really slow + // At this time we just store the data in the cache + $albums = qu("SELECT COUNT(DISTINCT `resource-id`) AS `total`, `album` + FROM `photo` USE INDEX (`uid_album_created`) + WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra + GROUP BY `album` ORDER BY `created` DESC", + intval($uid), + dbesc('Contact Photos'), + dbesc(t('Contact Photos')) + ); + } else { + // This query doesn't do the count and is much faster + $albums = qu("SELECT DISTINCT(`album`), '' AS `total` + FROM `photo` USE INDEX (`uid_album_created`) + WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' $sql_extra + GROUP BY `album` ORDER BY `created` DESC", + intval($uid), + dbesc('Contact Photos'), + dbesc(t('Contact Photos')) + ); + } Cache::set($key, $albums, CACHE_DAY); } return $albums; From 1b48799f08078d8120f23409e6333e59459da518 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 7 Jan 2017 11:28:18 +0000 Subject: [PATCH 19/23] Don't do queries if not needed --- mod/photos.php | 25 +++++++++++++------------ mod/wall_attach.php | 30 ++++++++++++++++-------------- mod/wall_upload.php | 20 +++++++++----------- 3 files changed, 38 insertions(+), 37 deletions(-) diff --git a/mod/photos.php b/mod/photos.php index e026944423..4b6704a719 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -818,21 +818,22 @@ function photos_post(&$a) { $imagedata = @file_get_contents($src); - - $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", - intval($a->data['user']['uid']) - ); - $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit'); - if (($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) { - notice( upgrade_message() . EOL ); - @unlink($src); - $foo = 0; - call_hooks('photo_post_end',$foo); - killme(); - } + if ($limit) { + $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + intval($a->data['user']['uid']) + ); + $size = $r[0]['total']; + if (($size + strlen($imagedata)) > $limit) { + notice( upgrade_message() . EOL ); + @unlink($src); + $foo = 0; + call_hooks('photo_post_end',$foo); + killme(); + } + } $ph = new Photo($imagedata, $type); diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 525d3509c1..fc82389741 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -112,23 +112,25 @@ function wall_attach_post(&$a) { killme(); } - $r = q("select sum(octet_length(data)) as total from attach where uid = %d ", - intval($page_owner_uid) - ); - $limit = service_class_fetch($page_owner_uid,'attach_upload_limit'); - if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) { - $msg = upgrade_message(true); - if ($r_json) { - echo json_encode(array('error'=>$msg)); - } else { - echo $msg. EOL ; - } - @unlink($src); - killme(); - } + if ($limit) { + $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + intval($page_owner_uid) + ); + $size = $r[0]['total']; + if (($size + strlen($imagedata)) > $limit) { + $msg = upgrade_message(true); + if ($r_json) { + echo json_encode(array('error'=>$msg)); + } else { + echo $msg. EOL ; + } + @unlink($src); + killme(); + } + } $filedata = @file_get_contents($src); $mimetype = z_mime_content_type($filename); diff --git a/mod/wall_upload.php b/mod/wall_upload.php index eb2a92323a..c789262c64 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -166,21 +166,19 @@ function wall_upload_post(&$a, $desktopmode = true) { intval($page_owner_uid) ); $size = $r[0]['total']; - } else - $size = 0; - if(($limit !== false) && (($size + strlen($imagedata)) > $limit)) { - $msg = upgrade_message(true); - if ($r_json) { - echo json_encode(array('error'=>$msg)); - } else { - echo $msg. EOL; + if (($size + strlen($imagedata)) > $limit) { + $msg = upgrade_message(true); + if ($r_json) { + echo json_encode(array('error'=>$msg)); + } else { + echo $msg. EOL; + } + @unlink($src); + killme(); } - @unlink($src); - killme(); } - $imagedata = @file_get_contents($src); $ph = new Photo($imagedata, $filetype); From c2543f918b3c9fc6cc8655fb2f4e9f99752e0901 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 7 Jan 2017 13:52:30 +0000 Subject: [PATCH 20/23] Last minutes changes --- include/dbstructure.php | 5 ++++- include/diaspora.php | 2 +- mod/photos.php | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 8f47dc16e9..e519562b49 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -806,7 +806,9 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "uid_gid_contactid" => array("UNIQUE", "uid","gid","contact-id"), + "cid_contactid" => array("cid", "contact-id"), + "uid_contactid" => array("uid", "contact-id"), + "uid_gid_contactid" => array("UNIQUE", "uid", "gid", "contact-id"), ) ); $database["gserver"] = array( @@ -1160,6 +1162,7 @@ function db_definition($charset) { "uid_contactid" => array("uid", "contact-id"), "uid_profile" => array("uid", "profile"), "uid_album_created" => array("uid", "album(32)", "created"), + "uid_album_resource-id_created" => array("uid", "album(32)", "resource-id(64)", "created"), "resource-id" => array("resource-id(64)"), ) ); diff --git a/include/diaspora.php b/include/diaspora.php index 2b9e61331f..54bc744541 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -766,7 +766,7 @@ class Diaspora { intval($uid), dbesc($nurl_sql) ); - if(dbm::is_result($r)) { + if (dbm::is_result($r)) { return $r[0]; } diff --git a/mod/photos.php b/mod/photos.php index 4b6704a719..4880e7feb7 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -182,11 +182,11 @@ function photos_post(&$a) { return; // NOTREACHED } - $r = qu("SELECT count(*) FROM `photo` WHERE `album` = '%s' AND `uid` = %d", + $r = qu("SELECT `album` FROM `photo` WHERE `album` = '%s' AND `uid` = %d", dbesc($album), intval($page_owner_uid) ); - if (! dbm::is_result($r)) { + if (!dbm::is_result($r)) { notice( t('Album not found.') . EOL); goaway($_SESSION['photo_return']); return; // NOTREACHED From f14cd2920a6d27141289cc2b81aaf0dfabe02079 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 7 Jan 2017 22:04:57 +0000 Subject: [PATCH 21/23] database.sql was updated --- database.sql | 94 +++++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/database.sql b/database.sql index 2e83c33a64..becd14fc73 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 3.5.1-dev (Asparagus) --- DB_UPDATE_VERSION 1211 +-- DB_UPDATE_VERSION 1212 -- ------------------------------------------ @@ -174,9 +174,16 @@ CREATE TABLE IF NOT EXISTS `contact` ( `fetch_further_information` tinyint(1) NOT NULL DEFAULT 0, `ffi_keyword_blacklist` mediumtext, PRIMARY KEY(`id`), - INDEX `uid` (`uid`), - INDEX `addr_uid` (`addr`,`uid`), - INDEX `nurl` (`nurl`) + INDEX `uid_name` (`uid`,`name`), + INDEX `uid_self` (`uid`,`self`), + INDEX `alias_uid` (`alias`(32),`uid`), + INDEX `uid_pending` (`uid`,`pending`), + INDEX `uid_blocked` (`uid`,`blocked`), + INDEX `uid_rel_network_poll` (`uid`,`rel`,`network`,`poll`(64),`archive`), + INDEX `uid_network_batch` (`uid`,`network`,`batch`(64)), + INDEX `addr_uid` (`addr`(32),`uid`), + INDEX `nurl_uid` (`nurl`(32),`uid`), + INDEX `nick_uid` (`nick`(32),`uid`) ) DEFAULT CHARSET=utf8mb4; -- @@ -232,7 +239,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `deny_cid` mediumtext, `deny_gid` mediumtext, PRIMARY KEY(`id`), - INDEX `uid` (`uid`) + INDEX `uid_start` (`uid`,`start`) ) DEFAULT CHARSET=utf8mb4; -- @@ -257,7 +264,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( `pubkey` text, `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), - INDEX `addr` (`addr`) + INDEX `addr` (`addr`(32)) ) DEFAULT CHARSET=utf8mb4; -- @@ -280,7 +287,7 @@ CREATE TABLE IF NOT EXISTS `fserver` ( `posturl` varchar(255) NOT NULL DEFAULT '', `key` text, PRIMARY KEY(`id`), - INDEX `server` (`server`) + INDEX `server` (`server`(32)) ) DEFAULT CHARSET=utf8mb4; -- @@ -342,10 +349,10 @@ CREATE TABLE IF NOT EXISTS `gcontact` ( `generation` tinyint(3) NOT NULL DEFAULT 0, `server_url` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), - INDEX `nurl` (`nurl`), - INDEX `name` (`name`), - INDEX `nick` (`nick`), - INDEX `addr` (`addr`), + INDEX `nurl` (`nurl`(32)), + INDEX `name` (`name`(32)), + INDEX `nick` (`nick`(32)), + INDEX `addr` (`addr`(32)), INDEX `updated` (`updated`) ) DEFAULT CHARSET=utf8mb4; @@ -360,7 +367,7 @@ CREATE TABLE IF NOT EXISTS `glink` ( `zcid` int(11) NOT NULL DEFAULT 0, `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), - INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`), + UNIQUE INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`), INDEX `gcid` (`gcid`), INDEX `zcid` (`zcid`) ) DEFAULT CHARSET=utf8mb4; @@ -387,7 +394,9 @@ CREATE TABLE IF NOT EXISTS `group_member` ( `gid` int(10) unsigned NOT NULL DEFAULT 0, `contact-id` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`), - INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`) + INDEX `cid_contactid` (`cid`,`contact-id`), + INDEX `uid_contactid` (`uid`,`contact-id`), + UNIQUE INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`) ) DEFAULT CHARSET=utf8mb4; -- @@ -410,7 +419,7 @@ CREATE TABLE IF NOT EXISTS `gserver` ( `last_contact` datetime DEFAULT '0000-00-00 00:00:00', `last_failure` datetime DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), - INDEX `nurl` (`nurl`) + INDEX `nurl` (`nurl`(32)) ) DEFAULT CHARSET=utf8mb4; -- @@ -525,24 +534,17 @@ CREATE TABLE IF NOT EXISTS `item` ( INDEX `uid_network_received` (`uid`,`network`,`received`), INDEX `uid_received` (`uid`,`received`), INDEX `uid_network_commented` (`uid`,`network`,`commented`), - INDEX `uid_commented` (`uid`,`commented`), INDEX `uid_title` (`uid`,`title`), INDEX `uid_thrparent` (`uid`,`thr-parent`), INDEX `uid_parenturi` (`uid`,`parent-uri`), INDEX `uid_contactid_id` (`uid`,`contact-id`,`id`), INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`), - INDEX `gcontactid_uid_created` (`gcontact-id`,`uid`,`created`), INDEX `authorid_created` (`author-id`,`created`), - INDEX `ownerid_created` (`owner-id`,`created`), - INDEX `wall_body` (`wall`,`body`(6)), - INDEX `uid_visible_moderated_created` (`uid`,`visible`,`moderated`,`created`), INDEX `uid_uri` (`uid`,`uri`), INDEX `uid_wall_created` (`uid`,`wall`,`created`), INDEX `resource-id` (`resource-id`), INDEX `uid_type` (`uid`,`type`), - INDEX `uid_starred_id` (`uid`,`starred`,`id`), INDEX `contactid_allowcid_allowpid_denycid_denygid` (`contact-id`,`allow_cid`(10),`allow_gid`(10),`deny_cid`(10),`deny_gid`(10)), - INDEX `uid_wall_parent_created` (`uid`,`wall`,`parent`,`created`), INDEX `uid_type_changed` (`uid`,`type`,`changed`), INDEX `contactid_verb` (`contact-id`,`verb`), INDEX `deleted_changed` (`deleted`,`changed`), @@ -564,7 +566,7 @@ CREATE TABLE IF NOT EXISTS `item_id` ( PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `sid` (`sid`), - INDEX `service` (`service`), + INDEX `service` (`service`(32)), INDEX `iid` (`iid`) ) DEFAULT CHARSET=utf8mb4; @@ -602,11 +604,10 @@ CREATE TABLE IF NOT EXISTS `mail` ( `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), INDEX `uid` (`uid`), - INDEX `guid` (`guid`), + INDEX `uid_seen` (`uid`,`seen`), INDEX `convid` (`convid`), - INDEX `reply` (`reply`), - INDEX `uri` (`uri`), - INDEX `parent-uri` (`parent-uri`) + INDEX `uri` (`uri`(64)), + INDEX `parent-uri` (`parent-uri`(64)) ) DEFAULT CHARSET=utf8mb4; -- @@ -662,7 +663,11 @@ CREATE TABLE IF NOT EXISTS `notify` ( `name_cache` tinytext, `msg_cache` mediumtext, PRIMARY KEY(`id`), - INDEX `uid` (`uid`) + INDEX `uid_hash` (`uid`,`hash`), + INDEX `uid_seen_date` (`uid`,`seen`,`date`), + INDEX `uid_type_link` (`uid`,`type`,`link`), + INDEX `uid_link` (`uid`,`link`), + INDEX `uid_date` (`uid`,`date`) ) DEFAULT CHARSET=utf8mb4; -- @@ -675,8 +680,7 @@ CREATE TABLE IF NOT EXISTS `notify-threads` ( `parent-item` int(10) unsigned NOT NULL DEFAULT 0, `receiver-uid` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), - INDEX `master-parent-item` (`master-parent-item`), - INDEX `receiver-uid` (`receiver-uid`) + INDEX `master-parent-item` (`master-parent-item`) ) DEFAULT CHARSET=utf8mb4; -- @@ -745,9 +749,9 @@ CREATE TABLE IF NOT EXISTS `photo` ( PRIMARY KEY(`id`), INDEX `uid_contactid` (`uid`,`contact-id`), INDEX `uid_profile` (`uid`,`profile`), - INDEX `uid_album_created` (`uid`,`album`,`created`), - INDEX `resource-id` (`resource-id`), - INDEX `guid` (`guid`) + INDEX `uid_album_created` (`uid`,`album`(32),`created`), + INDEX `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`(64),`created`), + INDEX `resource-id` (`resource-id`(64)) ) DEFAULT CHARSET=utf8mb4; -- @@ -839,8 +843,7 @@ CREATE TABLE IF NOT EXISTS `profile` ( `thumb` varchar(255) NOT NULL DEFAULT '', `publish` tinyint(1) NOT NULL DEFAULT 0, `net-publish` tinyint(1) NOT NULL DEFAULT 0, - PRIMARY KEY(`id`), - INDEX `hometown` (`hometown`) + PRIMARY KEY(`id`) ) DEFAULT CHARSET=utf8mb4; -- @@ -912,8 +915,7 @@ CREATE TABLE IF NOT EXISTS `search` ( `uid` int(11) NOT NULL DEFAULT 0, `term` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), - INDEX `uid` (`uid`), - INDEX `term` (`term`) + INDEX `uid` (`uid`) ) DEFAULT CHARSET=utf8mb4; -- @@ -925,7 +927,7 @@ CREATE TABLE IF NOT EXISTS `session` ( `data` text, `expire` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`), - INDEX `sid` (`sid`), + INDEX `sid` (`sid`(64)), INDEX `expire` (`expire`) ) DEFAULT CHARSET=utf8mb4; @@ -977,12 +979,11 @@ CREATE TABLE IF NOT EXISTS `term` ( `uid` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`tid`), INDEX `oid_otype_type_term` (`oid`,`otype`,`type`,`term`), - INDEX `uid_term_tid` (`uid`,`term`,`tid`), - INDEX `type_term` (`type`,`term`), - INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`,`global`,`created`), - INDEX `otype_type_term_tid` (`otype`,`type`,`term`,`tid`), - INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`), - INDEX `guid` (`guid`) + INDEX `uid_term_tid` (`uid`,`term`(32),`tid`), + INDEX `type_term` (`type`,`term`(32)), + INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`(32),`global`,`created`), + INDEX `uid_otype_type_url` (`uid`,`otype`,`type`,`url`(64)), + INDEX `guid` (`guid`(64)) ) DEFAULT CHARSET=utf8mb4; -- @@ -1022,9 +1023,6 @@ CREATE TABLE IF NOT EXISTS `thread` ( INDEX `uid_network_created` (`uid`,`network`,`created`), INDEX `uid_contactid_commented` (`uid`,`contact-id`,`commented`), INDEX `uid_contactid_created` (`uid`,`contact-id`,`created`), - INDEX `uid_gcontactid_commented` (`uid`,`gcontact-id`,`commented`), - INDEX `uid_gcontactid_created` (`uid`,`gcontact-id`,`created`), - INDEX `wall_private_received` (`wall`,`private`,`received`), INDEX `uid_created` (`uid`,`created`), INDEX `uid_commented` (`uid`,`commented`) ) DEFAULT CHARSET=utf8mb4; @@ -1090,7 +1088,7 @@ CREATE TABLE IF NOT EXISTS `user` ( `deny_gid` mediumtext, `openidserver` text, PRIMARY KEY(`uid`), - INDEX `nickname` (`nickname`) + INDEX `nickname` (`nickname`(32)) ) DEFAULT CHARSET=utf8mb4; -- @@ -1100,7 +1098,7 @@ CREATE TABLE IF NOT EXISTS `userd` ( `id` int(11) NOT NULL auto_increment, `username` varchar(255) NOT NULL, PRIMARY KEY(`id`), - INDEX `username` (`username`) + INDEX `username` (`username`(32)) ) DEFAULT CHARSET=utf8mb4; -- From 28b2e599fb6ee3ee9ca0f3e3791482686cdbb902 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Jan 2017 20:11:15 +0000 Subject: [PATCH 22/23] it should be "gid" not "cid" --- include/dbstructure.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index e519562b49..5c89f49fb9 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -806,7 +806,7 @@ function db_definition($charset) { ), "indexes" => array( "PRIMARY" => array("id"), - "cid_contactid" => array("cid", "contact-id"), + "gid_contactid" => array("gid", "contact-id"), "uid_contactid" => array("uid", "contact-id"), "uid_gid_contactid" => array("UNIQUE", "uid", "gid", "contact-id"), ) From 16f0221e4c2b137e254853caac8acc7bf646c4d1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 9 Jan 2017 09:37:37 +0000 Subject: [PATCH 23/23] DBClean now has a smaller limit/Query improvements --- include/acl_selectors.php | 22 +++++++++++----------- include/cron.php | 2 +- include/dbclean.php | 31 +++++++++++++++++++------------ view/theme/frio/theme.php | 8 ++++---- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index f6c4f947ed..75a4985c89 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -135,7 +135,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { $o .= "\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' + WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' $sql_extra ORDER BY `name` ASC ", intval(local_user()) @@ -449,8 +449,8 @@ function acl_lookup(&$a, $out_type = 'json') { // autocomplete for editor mentions if ($type=='' || $type=='c'){ $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 - AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 + WHERE `uid` = %d AND NOT `self` + AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' $sql_extra2" , intval(local_user()) ); @@ -461,8 +461,8 @@ function acl_lookup(&$a, $out_type = 'json') { // autocomplete for Private Messages $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 - AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 + WHERE `uid` = %d AND NOT `self` + AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `network` IN ('%s','%s','%s') $sql_extra2" , intval(local_user()), dbesc(NETWORK_DFRN), @@ -477,8 +477,8 @@ function acl_lookup(&$a, $out_type = 'json') { // autocomplete for Contacts $r = q("SELECT COUNT(*) AS c FROM `contact` - WHERE `uid` = %d AND `self` = 0 - AND `pending` = 0 $sql_extra2" , + WHERE `uid` = %d AND NOT `self` + AND NOT `pending` $sql_extra2" , intval(local_user()) ); $contact_count = (int)$r[0]['c']; @@ -525,7 +525,7 @@ function acl_lookup(&$a, $out_type = 'json') { if ($type==''){ $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' + WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' AND NOT (`network` IN ('%s', '%s')) $sql_extra2 ORDER BY `name` ASC ", @@ -536,7 +536,7 @@ function acl_lookup(&$a, $out_type = 'json') { elseif ($type=='c'){ $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `forum`, `prv` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 AND `notify` != '' + WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `notify` != '' AND NOT (`network` IN ('%s')) $sql_extra2 ORDER BY `name` ASC ", @@ -546,7 +546,7 @@ function acl_lookup(&$a, $out_type = 'json') { } elseif($type == 'm') { $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0 + WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND `network` IN ('%s','%s','%s') $sql_extra2 ORDER BY `name` ASC ", diff --git a/include/cron.php b/include/cron.php index e98239b829..97744ed27a 100644 --- a/include/cron.php +++ b/include/cron.php @@ -128,7 +128,7 @@ function cron_run(&$argv, &$argc){ proc_run(PRIORITY_LOW, 'include/expire.php'); - proc_run(PRIORITY_LOW, 'include/dbclean.php'); + proc_run(PRIORITY_MEDIUM, 'include/dbclean.php'); cron_update_photo_albums(); } diff --git a/include/dbclean.php b/include/dbclean.php index 29c4173080..c80e5a3be3 100644 --- a/include/dbclean.php +++ b/include/dbclean.php @@ -23,8 +23,8 @@ function dbclean_run(&$argv, &$argc) { unset($db_host, $db_user, $db_pass, $db_data); } - load_config('config'); - load_config('system'); + Config::load('config'); + Config::load('system'); if (!Config::get('system', 'dbclean', false)) { return; @@ -36,7 +36,7 @@ function dbclean_run(&$argv, &$argc) { $stage = 0; } - if (get_config("system", "worker") AND ($stage == 0)) { + if (Config::get("system", "worker") AND ($stage == 0)) { proc_run(PRIORITY_LOW, 'include/dbclean.php', 1); proc_run(PRIORITY_LOW, 'include/dbclean.php', 2); proc_run(PRIORITY_LOW, 'include/dbclean.php', 3); @@ -57,11 +57,18 @@ function remove_orphans($stage = 0) { $count = 0; + // With activated worker we split the deletion in many small tasks + if (Config::get("system", "worker")) { + $limit = 1000; + } else { + $limit = 10000; + } + if (($stage == 1) OR ($stage == 0)) { logger("Deleting old global item entries from item table without user copy"); if ($db->q("SELECT `id` FROM `item` WHERE `uid` = 0 AND NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) - AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT 10000", true)) { + AND `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found global item orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -74,7 +81,7 @@ function remove_orphans($stage = 0) { if (($stage == 2) OR ($stage == 0)) { logger("Deleting items without parents"); - if ($db->q("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT 10000", true)) { + if ($db->q("SELECT `id` FROM `item` WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found item orphans without parents: ".$count); while ($orphan = $db->qfetch()) { @@ -87,7 +94,7 @@ function remove_orphans($stage = 0) { if (($stage == 3) OR ($stage == 0)) { logger("Deleting orphaned data from thread table"); - if ($db->q("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`)", true)) { + if ($db->q("SELECT `iid` FROM `thread` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found thread orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -100,7 +107,7 @@ function remove_orphans($stage = 0) { if (($stage == 4) OR ($stage == 0)) { logger("Deleting orphaned data from notify table"); - if ($db->q("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`)", true)) { + if ($db->q("SELECT `iid` FROM `notify` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found notify orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -113,7 +120,7 @@ function remove_orphans($stage = 0) { if (($stage == 5) OR ($stage == 0)) { logger("Deleting orphaned data from notify-threads table"); - if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`)", true)) { + if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found notify-threads orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -127,7 +134,7 @@ function remove_orphans($stage = 0) { if (($stage == 6) OR ($stage == 0)) { logger("Deleting orphaned data from sign table"); - if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`)", true)) { + if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found sign orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -141,7 +148,7 @@ function remove_orphans($stage = 0) { if (($stage == 7) OR ($stage == 0)) { logger("Deleting orphaned data from term table"); - if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`)", true)) { + if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) LIMIT ".intval($limit), true)) { $count = $db->num_rows(); logger("found term orphans: ".$count); while ($orphan = $db->qfetch()) { @@ -153,8 +160,8 @@ function remove_orphans($stage = 0) { } // Call it again if not all entries were purged - if (($stage != 0) AND ($count > 0) AND get_config("system", "worker")) { - proc_run(PRIORITY_LOW, 'include/dbclean.php'); + if (($stage != 0) AND ($count > 0) AND Config::get("system", "worker")) { + proc_run(PRIORITY_MEDIUM, 'include/dbclean.php'); } } diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php index f9cbf79a6a..a2fde7b25f 100644 --- a/view/theme/frio/theme.php +++ b/view/theme/frio/theme.php @@ -219,8 +219,8 @@ function frio_remote_nav($a,&$nav) { // empty the server url for local user because we won't need it $server_url = ''; // user info - $r = q("SELECT `micro` FROM `contact` WHERE `uid` = %d AND `self` = 1", intval($a->user['uid'])); - + $r = q("SELECT `micro` FROM `contact` WHERE `uid` = %d AND `self`", intval($a->user['uid'])); + $r[0]['photo'] = (dbm::is_result($r) ? $a->remove_baseurl($r[0]['micro']) : "images/person-48.jpg"); $r[0]['name'] = $a->user['username']; @@ -298,7 +298,7 @@ function frio_acl_lookup($a, &$results) { $r = q("SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ", + WHERE `uid` = %d AND NOT `self` AND NOT `pending` $sql_extra $sql_extra2 ", intval($_SESSION['uid'])); if (dbm::is_result($r)) { $total = $r[0]["total"]; @@ -306,7 +306,7 @@ function frio_acl_lookup($a, &$results) { $sql_extra3 = unavailable_networks(); - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT 100 ", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND NOT `self` AND NOT `pending` $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT 100 ", intval($_SESSION['uid']) );