X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=update.php;h=521b956ad33b7d60311928690ff0da1716864042;hb=d5e490952aae542520b6dcaf9a9297f3b8199dfc;hp=abbe6c577bc5d496859674fc2806989de9205160;hpb=6322ac79a020ab584d412d782d62b2ee77d7c6cf;p=tt-rss.git
diff --git a/update.php b/update.php
index abbe6c57..521b956a 100755
--- a/update.php
+++ b/update.php
@@ -14,7 +14,6 @@
require_once "sanity_check.php";
require_once "db.php";
require_once "db-prefs.php";
- require_once "errorhandler.php";
if (!defined('PHP_EXECUTABLE'))
define('PHP_EXECUTABLE', '/usr/bin/php');
@@ -30,24 +29,32 @@
"quiet",
"log:",
"indexes",
+ "pidlock:",
"update-schema",
"convert-filters",
"force-update",
"list-plugins",
"help");
- foreach ($pluginhost->get_commands() as $command => $data) {
+ foreach (PluginHost::getInstance()->get_commands() as $command => $data) {
array_push($longopts, $command . $data["suffix"]);
}
$options = getopt("", $longopts);
+ if (!is_array($options)) {
+ die("error: getopt() failed. ".
+ "Most probably you are using PHP CGI to run this script ".
+ "instead of required PHP CLI. Check tt-rss wiki page on updating feeds for ".
+ "additional information.\n");
+ }
+
if (count($options) == 0 && !defined('STDIN')) {
?>
Tiny Tiny RSS data update script.
-
+
@@ -79,7 +86,7 @@
print " --help - show this help\n";
print "Plugin options:\n";
- foreach ($pluginhost->get_commands() as $command => $data) {
+ foreach (PluginHost::getInstance()->get_commands() as $command => $data) {
$args = $data['arghelp'];
printf(" --%-19s - %s\n", "$command $args", $data["description"]);
}
@@ -87,6 +94,10 @@
return;
}
+ if (!isset($options['daemon'])) {
+ require_once "errorhandler.php";
+ }
+
if (!isset($options['update-schema'])) {
$schema_version = get_schema_version();
@@ -113,9 +124,23 @@
$lock_filename = $lock_filename . "-task_" . $options["task"];
}
+ if (isset($options["pidlock"])) {
+ $my_pid = $options["pidlock"];
+ $lock_filename = "update_daemon-$my_pid.lock";
+
+ }
+
+ _debug("Lock: $lock_filename");
+
$lock_handle = make_lockfile($lock_filename);
$must_exit = false;
+ if (isset($options["task"]) && isset($options["pidlock"])) {
+ $waits = $options["task"] * 5;
+ _debug("Waiting before update ($waits)");
+ sleep($waits);
+ }
+
// Try to lock a file in order to avoid concurrent update.
if (!$lock_handle) {
die("error: Can't create lockfile ($lock_filename). ".
@@ -130,21 +155,10 @@
}
if (isset($options["feeds"])) {
- // Update all feeds needing a update.
update_daemon_common();
+ housekeeping_common(true);
- // 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.");
-
- global $pluginhost;
- $pluginhost->run_hooks($pluginhost::HOOK_UPDATE_TASK, "hook_update_task", $op);
+ PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
}
if (isset($options["feedbrowser"])) {
@@ -155,8 +169,9 @@
if (isset($options["daemon"])) {
while (true) {
$quiet = (isset($options["quiet"])) ? "--quiet" : "";
+ $log = isset($options['log']) ? '--log '.$options['log'] : '';
- passthru(PHP_EXECUTABLE . " " . $argv[0] ." --daemon-loop $quiet");
+ passthru(PHP_EXECUTABLE . " " . $argv[0] ." --daemon-loop $quiet $log");
_debug("Sleeping for " . DAEMON_SLEEP_INTERVAL . " seconds...");
sleep(DAEMON_SLEEP_INTERVAL);
}
@@ -167,25 +182,12 @@
_debug("warning: unable to create stampfile\n");
}
- // Call to the feed batch update function
- // or regenerate feedbrowser cache
-
- if (rand(0,100) > 30) {
- update_daemon_common();
- } else {
- $count = update_feedbrowser_cache();
- _debug("Feedbrowser updated, $count feeds processed.");
-
- purge_orphans( true);
+ update_daemon_common(isset($options["pidlock"]) ? 50 : DAEMON_FEED_LIMIT);
- $rc = cleanup_tags( 14, 50000);
-
- _debug("Cleaned $rc cached tags.");
-
- global $pluginhost;
- $pluginhost->run_hooks($pluginhost::HOOK_UPDATE_TASK, "hook_update_task", $op);
- }
+ if (!isset($options["pidlock"]) || $options["task"] == 0)
+ housekeeping_common(true);
+ PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
}
if (isset($options["cleanup-tags"])) {
@@ -292,7 +294,7 @@
$_REQUEST = $filter;
$_SESSION["uid"] = $owner_uid;
- $filters = new Pref_Filters( $_REQUEST);
+ $filters = new Pref_Filters($_REQUEST);
$filters->add();
}
}
@@ -302,7 +304,7 @@
if (isset($options["update-schema"])) {
_debug("checking for updates (" . DB_TYPE . ")...");
- $updater = new DbUpdater( DB_TYPE, SCHEMA_VERSION);
+ $updater = new DbUpdater(Db::get(), DB_TYPE, SCHEMA_VERSION);
if ($updater->isUpdateRequired()) {
_debug("schema update required, version " . $updater->getSchemaVersion() . " to " . SCHEMA_VERSION);
@@ -350,11 +352,7 @@
}
- $pluginhost->run_commands($options);
-
- if ($lock_handle != false) {
- fclose($lock_handle);
- }
+ PluginHost::getInstance()->run_commands($options);
if (file_exists(LOCK_DIRECTORY . "/$lock_filename"))
unlink(LOCK_DIRECTORY . "/$lock_filename");