Improved cronjob

This commit is contained in:
Dysosmus 2013-05-18 20:35:16 +02:00
parent 2003f47c4c
commit 8d984fc1c1
4 changed files with 56 additions and 15 deletions

View File

@ -67,13 +67,28 @@ FAQ
### How to update your feeds with a cronjob? ### How to update your feeds with a cronjob?
You just need to be inside the directory `miniflux` and run the script `cronjob.php`. You just need to be inside the directory `miniflux` and run the script `cronjob.php`.
By example: Prameters | Type | Value
-------------------|--------------------------------|-----------------------------
--limit | optional |time in minutes
--call-interval | optional, exclude by --limit, requires --update-interval |time in minutes < update inteval time
--update-interval | optional, exclude by --limit, requires --call-interval |time in minutes >= call interval time
Examples:
crontab -e crontab -e
0 */4 * * * cd /path/to/miniflux && php cronjob.php >/dev/null 2>&1 0 */4 * * * cd /path/to/miniflux && php cronjob.php >/dev/null 2>&1
# Updates the 10 oldest feeds each time
0 */4 * * * cd /path/to/miniflux && php cronjob.php --limit=10 >/dev/null 2>&1
# Updates all feeds in 60mn (updates the 8 oldest feeds each time with a total of 120 feeds).
0 */4 * * * cd /path/to/miniflux && php cronjob.php --call-interval=4 --update-interval=60 >/dev/null 2>&1
### How Miniflux update my feeds from the user interface? ### How Miniflux update my feeds from the user interface?

View File

@ -10,17 +10,21 @@ require 'schema.php';
require 'model.php'; require 'model.php';
const DB_VERSION = 4; const DB_VERSION = 5;
const APP_VERSION = 'master'; const APP_VERSION = 'master';
const APP_USERAGENT = 'Miniflux - http://miniflux.net'; const APP_USERAGENT = 'Miniflux - http://miniflux.net';
const HTTP_TIMEOUT = 5; const HTTP_TIMEOUT = 5;
const LIMIT_ALL = -1;
function get_db_filename() function get_db_filename()
{ {
return 'data/db.sqlite'; return 'data/db.sqlite';
} }
function is_console()
{
return php_sapi_name() === 'cli';
}
PicoTools\container('db', function() { PicoTools\container('db', function() {

View File

@ -107,10 +107,11 @@ function import_feed($url)
return false; return false;
} }
function update_feeds($limit = LIMIT_ALL)
function update_feeds()
{ {
foreach (get_feeds_id() as $feed_id) { $feeds_id = get_feeds_id($limit);
foreach ($feeds_id as $feed_id) {
update_feed($feed_id); update_feed($feed_id);
} }
@ -134,6 +135,8 @@ function update_feed($feed_id)
APP_USERAGENT APP_USERAGENT
); );
update_feed_last_checked($feed_id);
if (! $resource->isModified()) { if (! $resource->isModified()) {
return true; return true;
@ -158,12 +161,18 @@ function update_feed($feed_id)
} }
function get_feeds_id() function get_feeds_id($limit = LIMIT_ALL)
{ {
return \PicoTools\singleton('db') $table_feeds = \PicoTools\singleton('db')->table('feeds')
->table('feeds') ->desc('last_checked');
->asc('updated')
->listing('id', 'id'); if($limit !== LIMIT_ALL) {
$table_feeds->limit((int)$limit);
}
return $table_feeds->listing('id', 'id');
} }
@ -184,6 +193,14 @@ function get_feed($feed_id)
->findOne(); ->findOne();
} }
function update_feed_last_checked($feed_id) {
\PicoTools\singleton('db')
->table('feeds')
->eq('id', $feed_id)
->save(array(
'last_checked' => time(),
));
}
function update_feed_cache_infos($feed_id, $last_modified, $etag) function update_feed_cache_infos($feed_id, $last_modified, $etag)
{ {
@ -192,7 +209,8 @@ function update_feed_cache_infos($feed_id, $last_modified, $etag)
->eq('id', $feed_id) ->eq('id', $feed_id)
->save(array( ->save(array(
'last_modified' => $last_modified, 'last_modified' => $last_modified,
'etag' => $etag 'etag' => $etag,
'last_checked' => time(),
)); ));
} }

View File

@ -2,6 +2,10 @@
namespace Schema; namespace Schema;
function version_5($pdo)
{
$pdo->exec('ALTER TABLE feeds ADD COLUMN last_checked INTEGER');
}
function version_4($pdo) function version_4($pdo)
{ {