summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.php38
-rw-r--r--schema/ttrss_schema_pgsql.sql1
-rw-r--r--update_daemon.php13
3 files changed, 43 insertions, 9 deletions
diff --git a/functions.php b/functions.php
index 69decc65c..f0d6aa05e 100644
--- a/functions.php
+++ b/functions.php
@@ -19,10 +19,16 @@
$rows = -1;
if (DB_TYPE == "pgsql") {
- $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE
+/* $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE
marked = false AND feed_id = '$feed_id' AND
(SELECT date_entered FROM ttrss_entries WHERE
- id = ref_id) < NOW() - INTERVAL '$purge_interval days'");
+ id = ref_id) < NOW() - INTERVAL '$purge_interval days'"); */
+
+ $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE
+ ttrss_entries.id = ref_id AND
+ marked = false AND
+ feed_id = '$feed_id' AND
+ ttrss_entries.date_entered < NOW() - INTERVAL '$purge_interval days'");
$rows = pg_affected_rows($result);
@@ -40,10 +46,23 @@
}
}
- function global_purge_old_posts($link, $do_output = false) {
+ function global_purge_old_posts($link, $do_output = false, $limit = false) {
+
+ if (DB_TYPE == "mysql") {
+ $random_qpart = "RAND()";
+ } else {
+ $random_qpart = "RANDOM()";
+ }
+ if ($limit) {
+ $limit_qpart = "LIMIT $limit";
+ } else {
+ $limit_qpart = "";
+ }
+
$result = db_query($link,
- "SELECT id,purge_interval,owner_uid FROM ttrss_feeds ORDER BY id");
+ "SELECT id,purge_interval,owner_uid FROM ttrss_feeds
+ ORDER BY $random_qpart $limit_qpart");
while ($line = db_fetch_assoc($result)) {
@@ -239,7 +258,7 @@
if ($rss) {
- db_query($link, "BEGIN");
+// db_query($link, "BEGIN");
$result = db_query($link, "SELECT title,icon_url,site_url,owner_uid
FROM ttrss_feeds WHERE id = '$feed'");
@@ -389,6 +408,8 @@
if (!$num_comments) $num_comments = 0;
+ db_query($link, "BEGIN");
+
if (db_num_rows($result) == 0) {
// base post entry does not exist, create it
@@ -533,6 +554,8 @@
}
}
+ db_query($link, "COMMIT");
+
/* taaaags */
// <a href="http://technorati.com/tag/Xorg" rel="tag">Xorg</a>, //
@@ -549,6 +572,8 @@
if (count($entry_tags) > 0) {
+ db_query($link, "BEGIN");
+
$result = db_query($link, "SELECT id,int_id
FROM ttrss_entries,ttrss_user_entries
WHERE guid = '$entry_guid'
@@ -582,13 +607,14 @@
}
}
}
+ db_query($link, "COMMIT");
}
}
db_query($link, "UPDATE ttrss_feeds
SET last_updated = NOW(), last_error = '' WHERE id = '$feed'");
- db_query($link, "COMMIT");
+// db_query($link, "COMMIT");
} else {
$error_msg = db_escape_string(magpie_error());
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index 7013228fb..a4a711078 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -83,6 +83,7 @@ create table ttrss_entries (id serial not null primary key,
create index ttrss_entries_guid_index on ttrss_entries(guid);
create index ttrss_entries_title_index on ttrss_entries(title);
+create index ttrss_entries_date_entered_index on ttrss_entries(date_entered);
create table ttrss_user_entries (
int_id serial not null primary key,
diff --git a/update_daemon.php b/update_daemon.php
index da94050fc..cf51bdd3a 100644
--- a/update_daemon.php
+++ b/update_daemon.php
@@ -74,14 +74,21 @@
$result = db_query($link, "SELECT feed_url,id,owner_uid,
SUBSTRING(last_updated,1,19) AS last_updated,
update_interval FROM ttrss_feeds ORDER BY last_updated DESC");
-
+
+ $user_prefs_cache = array();
+
while ($line = db_fetch_assoc($result)) {
$upd_intl = $line["update_interval"];
$user_id = $line["owner_uid"];
if (!$upd_intl || $upd_intl == 0) {
- $upd_intl = get_pref($link, 'DEFAULT_UPDATE_INTERVAL', $user_id);
+ if (!$user_prefs_cache[$user_id]['DEFAULT_UPDATE_INTERVAL']) {
+ $upd_intl = get_pref($link, 'DEFAULT_UPDATE_INTERVAL', $user_id);
+ $user_prefs_cache[$user_id]['DEFAULT_UPDATE_INTERVAL'] = $upd_intl;
+ } else {
+ $upd_intl = $user_prefs_cache[$user_id]['DEFAULT_UPDATE_INTERVAL'];
+ }
}
if ($upd_intl < 0) {
@@ -99,7 +106,7 @@
print "Updating...\n";
update_rss_feed($link, $line["feed_url"], $line["id"], true);
- sleep(3); // prevent flood (FIXME make this an option?)
+ sleep(1); // prevent flood (FIXME make this an option?)
} else {
print "Update not needed.\n";
}