diff options
author | Andrew Dolgov <[email protected]> | 2006-02-11 14:52:17 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2006-02-11 14:52:17 +0100 |
commit | de696427ad56edeb2dd982e41eda1e6e43e1062c (patch) | |
tree | 10e185b34e67caf0f1c49062d74cefe9f479d6bc | |
parent | cbd8650dfe0edd0a2eecd99b78cda80c61cd123d (diff) |
initial work on update daemon
-rw-r--r-- | backend.php | 2 | ||||
-rw-r--r-- | config.php-dist | 6 | ||||
-rw-r--r-- | db-prefs.php | 10 | ||||
-rw-r--r-- | schema/ttrss_schema_mysql.sql | 9 | ||||
-rw-r--r-- | schema/ttrss_schema_pgsql.sql | 7 | ||||
-rw-r--r-- | update_daemon.php | 65 | ||||
-rw-r--r-- | update_feeds.php | 2 |
7 files changed, 93 insertions, 8 deletions
diff --git a/backend.php b/backend.php index 3ba723d2e..55f2fa99f 100644 --- a/backend.php +++ b/backend.php @@ -1,6 +1,6 @@ <? session_start(); - + if ($_GET["debug"]) { define('DEFAULT_ERROR_LEVEL', E_ALL); } else { diff --git a/config.php-dist b/config.php-dist index 7326586b2..7a92c7423 100644 --- a/config.php-dist +++ b/config.php-dist @@ -82,6 +82,10 @@ // 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 ?> diff --git a/db-prefs.php b/db-prefs.php index 1b6262d9a..80d890fbc 100644 --- a/db-prefs.php +++ b/db-prefs.php @@ -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) { diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 8b62cd837..8bfd48860 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -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; diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index a0d570d36..d948fa560 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -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 index 000000000..4f30cb53e --- /dev/null +++ b/update_daemon.php @@ -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); + +?> diff --git a/update_feeds.php b/update_feeds.php index b2836a446..31e3a1283 100644 --- a/update_feeds.php +++ b/update_feeds.php @@ -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"; |