Browse Source

unify houskeeping stuff, increase spawn interval

Andrew Dolgov 11 years ago
parent
commit
e2cf81e214
6 changed files with 25 additions and 46 deletions
  1. 4 0
      classes/db.php
  2. 1 8
      classes/handler/public.php
  3. 1 1
      include/functions.php
  4. 14 5
      include/rssfuncs.php
  5. 2 19
      update.php
  6. 3 13
      update_daemon2.php

+ 4 - 0
classes/db.php

@@ -53,6 +53,10 @@ class Db implements IDb {
 		return("'$str'");
 	}
 
+	function reconnect() {
+		$this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : "");
+	}
+
 	function connect($host, $user, $pass, $db, $port) {
 		//return $this->adapter->connect($host, $user, $pass, $db, $port);
 		return ;

+ 1 - 8
classes/handler/public.php

@@ -368,14 +368,7 @@ class Handler_Public extends Handler {
 		include "rssfuncs.php";
 		// Update all feeds needing a update.
 		update_daemon_common(0, true, false);
-
-		// Update feedbrowser
-		update_feedbrowser_cache();
-
-		// Purge orphans and cleanup tags
-		purge_orphans();
-
-		cleanup_tags(14, 50000);
+		housekeeping_common(false);
 
 		PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
 

+ 1 - 1
include/functions.php

@@ -922,7 +922,7 @@
 	function get_schema_version($nocache = false) {
 		global $schema_version;
 
-		if (!$schema_version) {
+		if (!$schema_version && !$nocache) {
 			$result = db_query("SELECT schema_version FROM ttrss_version");
 			$version = db_fetch_result($result, 0, "schema_version");
 			$schema_version = $version;

+ 14 - 5
include/rssfuncs.php

@@ -1,7 +1,7 @@
 <?php
 	define_default('DAEMON_UPDATE_LOGIN_LIMIT', 30);
 	define_default('DAEMON_FEED_LIMIT', 500);
-	define_default('DAEMON_SLEEP_INTERVAL', 60);
+	define_default('DAEMON_SLEEP_INTERVAL', 120);
 
 	function update_feedbrowser_cache() {
 
@@ -150,10 +150,6 @@
 				WHERE feed_url IN (%s)", implode(',', $feeds_quoted)));
 		}
 
-		expire_cached_files($debug);
-		expire_lock_files($debug);
-		expire_error_log($debug);
-
 		$nf = 0;
 
 		// For each feed, we call the feed update function.
@@ -1374,4 +1370,17 @@
 		return $error;
 	}
 
+	function housekeeping_common($debug) {
+		expire_cached_files($debug);
+		expire_lock_files($debug);
+		expire_error_log($debug);
+
+		$count = update_feedbrowser_cache();
+		_debug("Feedbrowser updated, $count feeds processed.");
+
+		purge_orphans( true);
+		$rc = cleanup_tags( 14, 50000);
+
+		_debug("Cleaned $rc cached tags.");
+	}
 ?>

+ 2 - 19
update.php

@@ -148,18 +148,8 @@
 	}
 
 	if (isset($options["feeds"])) {
-		// Update all feeds needing a update.
 		update_daemon_common();
-
-		// Update feedbrowser
-		$count = update_feedbrowser_cache();
-		_debug("Feedbrowser updated, $count feeds processed.");
-
-		// Purge orphans and cleanup tags
-		purge_orphans( true);
-
-		$rc = cleanup_tags( 14, 50000);
-		_debug("Cleaned $rc cached tags.");
+		housekeeping_common(true);
 
 		PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
 	}
@@ -185,15 +175,8 @@
 		}
 
 		update_daemon_common(isset($options["pidlock"]) ? 50 : DAEMON_FEED_LIMIT);
+		housekeeping_common(true);
 
-		$count = update_feedbrowser_cache();
-		_debug("Feedbrowser updated, $count feeds processed.");
-
-		purge_orphans( true);
-
-		$rc = cleanup_tags( 14, 50000);
-
-		_debug("Cleaned $rc cached tags.");
 		PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
 	}
 

+ 3 - 13
update_daemon2.php

@@ -170,14 +170,15 @@
 			"Maybe another daemon is already running.\n");
 	}
 
-	init_plugins();
-
 	$schema_version = get_schema_version();
 
 	if ($schema_version != SCHEMA_VERSION) {
 		die("Schema version is wrong, please upgrade the database.\n");
 	}
 
+	// Protip: children close shared database handle when terminating, it's a bad idea to
+	// do database stuff on main process from now on.
+
 	while (true) {
 
 		// Since sleep is interupted by SIGCHLD, we need another way to
@@ -190,17 +191,6 @@
 		}
 
 		if ($last_checkpoint + $spawn_interval < time()) {
-
-			/* Check if schema version changed */
-
-			$test_schema_version = get_schema_version();
-
-			if ($test_schema_version != $schema_version) {
-				echo "Expected schema version: $schema_version, got: $test_schema_version\n";
-				echo "Schema version changed while we were running, bailing out\n";
-				exit(100);
-			}
-
 			check_ctimes();
 			reap_children();