]> git.wh0rd.org Git - tt-rss.git/commitdiff
initial work on update daemon
authorAndrew Dolgov <fox@bah.spb.su>
Sat, 11 Feb 2006 13:52:17 +0000 (14:52 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Sat, 11 Feb 2006 13:52:17 +0000 (14:52 +0100)
backend.php
config.php-dist
db-prefs.php
schema/ttrss_schema_mysql.sql
schema/ttrss_schema_pgsql.sql
update_daemon.php [new file with mode: 0644]
update_feeds.php

index 3ba723d2eb4f42ef183ec67775df0b05bcf33f9b..55f2fa99f25dd4df2ed01d06d813aeba59bd24d6 100644 (file)
@@ -1,6 +1,6 @@
 <?
        session_start();
-
+       
        if ($_GET["debug"]) {
                define('DEFAULT_ERROR_LEVEL', E_ALL);
        } else {
index 7326586b216f927b4779588421df79b066a3480e..7a92c742314de65fb55fd8746d3a7b863fee9509 100644 (file)
        // If this option is enabled (non-zero) feeds are updated in random order.
        // It is also recommended to set FEEDS_FRAME_REFRESH to a lower value if using
        // this option.
-       
+
+       define('DISABLE_SESSIONS', false);
+       // Disables sessions (this is ONLY useful for commandline daemons using
+       // tt-rss code, DON'T enable this option EVER)
+
        // vim:ft=php
 ?>
index 1b6262d9a13ce311bcff7e32aeaa57f7e645fb3d..80d890fbc249973e03e068c1da85d7cf5bcb20c2 100644 (file)
@@ -2,10 +2,12 @@
        require_once "config.php";
        require_once "db.php";
 
-       session_start();
-
-       if (!$_SESSION["prefs_cache"])
-               $_SESSION["prefs_cache"] = array();
+       if (! DISABLE_SESSIONS) {       
+               session_start();
+               
+               if (!$_SESSION["prefs_cache"])
+                       $_SESSION["prefs_cache"] = array();
+       }
 
        function get_pref($link, $pref_name, $user_id = false) {
 
index 8b62cd837d1a1434f0dd9bad2948aad365bdc9da..8bfd488600ce5ea30207109da9f92cb8f7a9a03c 100644 (file)
@@ -170,7 +170,7 @@ create table ttrss_tags (id integer primary key auto_increment,
 
 create table ttrss_version (schema_version int not null) TYPE=InnoDB;
 
-insert into ttrss_version values (4);
+insert into ttrss_version values (5);
 
 create table ttrss_prefs_types (id integer not null primary key, 
        type_name varchar(100) not null) TYPE=InnoDB;
@@ -246,4 +246,11 @@ create table ttrss_user_prefs (
        index (pref_name),
        foreign key (pref_name) references ttrss_prefs(pref_name) ON DELETE CASCADE) TYPE=InnoDB;
 
+create table ttrss_scheduled_updates (id integer not null primary key auto_increment,
+       owner_uid integer not null,
+       feed_id integer default null,
+       entered datetime not null,
+       foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE,
+       foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE) TYPE=InnoDB;
+
 commit;
index a0d570d36ebc6bf774f10e98693375ff285a9970..d948fa5605db9d8659b8714a96b3fd3eb1df3713 100644 (file)
@@ -152,7 +152,7 @@ create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid);
 
 create table ttrss_version (schema_version int not null);
 
-insert into ttrss_version values (4);
+insert into ttrss_version values (5);
 
 create table ttrss_prefs_types (id integer not null primary key, 
        type_name varchar(100) not null);
@@ -223,4 +223,9 @@ create table ttrss_user_prefs (
 create index ttrss_user_prefs_owner_uid_index on ttrss_user_prefs(owner_uid);
 create index ttrss_user_prefs_value_index on ttrss_user_prefs(value);
 
+create table ttrss_scheduled_updates (id serial not null primary key,
+       owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
+       feed_id integer default null references ttrss_feeds(id) ON DELETE CASCADE,
+       entered timestamp not null default NOW());
+
 commit;
diff --git a/update_daemon.php b/update_daemon.php
new file mode 100644 (file)
index 0000000..4f30cb5
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/php4
+<?
+       // this daemon runs in the background and updates all feeds
+       // continuously
+
+       define('SLEEP_INTERVAL', 30); // seconds
+
+       // TODO: allow update scheduling from users
+
+       define('MAGPIE_CACHE_DIR', '/var/tmp/magpie-ttrss-cache-daemon');
+
+       define('DISABLE_SESSIONS', true);
+
+       require_once "sanity_check.php";
+       require_once "config.php";
+       require_once "db.php";
+       require_once "db-prefs.php";
+       require_once "functions.php";
+       require_once "magpierss/rss_fetch.inc";
+
+       $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
+
+       if (!$link) {
+               if (DB_TYPE == "mysql") {
+                       print mysql_error();
+               }
+               // PG seems to display its own errors just fine by default.             
+               return;
+       }
+
+       if (DB_TYPE == "pgsql") {
+               pg_query("set client_encoding = 'utf-8'");
+       }
+
+       $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");
+
+       while ($line = db_fetch_assoc($result)) {
+
+               print "Checking feed: " . $line["feed_url"] . "\n";
+
+               $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 ($fetch || (!$line["last_updated"] || 
+                       time() - strtotime($line["last_updated"]) > ($upd_intl * 60))) {
+
+                       print "Updating...\n";
+
+                       update_rss_feed($link, $line["feed_url"], $line["id"], true);
+
+               }
+       }
+
+       sleep(SLEEP_INTERVAL);
+
+       db_close($link);
+
+?>
index b2836a446e697f80eb9bee54bd952b49ef083543..31e3a1283add1500f9734f28c8480313098bee56 100644 (file)
@@ -4,6 +4,8 @@
        // directory defined in config.php won't be accessible
        define('MAGPIE_CACHE_DIR', '/var/tmp/magpie-ttrss-cache-cli');
 
+       define('DISABLE_SESSIONS', true);
+
        require_once "sanity_check.php";
        require_once "config.php";
        require_once "db.php";