initial work on update daemon

This commit is contained in:
Andrew Dolgov 2006-02-11 14:52:17 +01:00
parent cbd8650dfe
commit de696427ad
7 changed files with 93 additions and 8 deletions

View file

@ -1,6 +1,6 @@
<?
session_start();
if ($_GET["debug"]) {
define('DEFAULT_ERROR_LEVEL', E_ALL);
} else {

View file

@ -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
?>

View 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) {

View 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;

View 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;

65
update_daemon.php Normal file
View file

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

View 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";