Skip to content

Commit

Permalink
Minors cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Frederic Guillot committed May 21, 2013
1 parent 11e4703 commit d21b061
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 28 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
update*
make-archive.sh
*.sqlite
*.db
23 changes: 11 additions & 12 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -67,28 +67,27 @@ FAQ

### 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`.

Parameters | Type | Value
--------------------|--------------------------------|-----------------------------
--limit | optional | time in minutes
--call-interval | optional, excluded by --limit, require --update-interval | time in minutes < update interval time
--update-interval | optional, excluded by --limit, require --call-interval | time in minutes >= call interval time

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

# Update all feeds
0 */4 * * * cd /path/to/miniflux && php cronjob.php >/dev/null 2>&1

# Updates the 10 oldest feeds each time

# Update 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
# Update all feeds in 60 minutes (updates the 8 oldest feeds each time with a total of 120 feeds).
* */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?

Expand Down
5 changes: 4 additions & 1 deletion miniflux/common.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,19 @@
const HTTP_TIMEOUT = 5;
const LIMIT_ALL = -1;


function get_db_filename()
{
return 'data/db.sqlite';
}

function is_console()

function is_console()
{
return php_sapi_name() === 'cli';
}


PicoTools\container('db', function() {

$db = new PicoDb\Database(array(
Expand Down
18 changes: 10 additions & 8 deletions miniflux/cronjob.php
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
<?php

require 'common.php';

if(is_console()) {
if (is_console()) {

$options = getopt('', array(
'limit::',
'call-interval::',
'update-interval::'
));

$limit = empty($options['limit']) ? LIMIT_ALL : (int)$options['limit'];
$update_interval = empty($options['update-interval']) ? null : (int)$options['update-interval'];
$call_interval = empty($options['call-interval']) ? null : (int)$options['call-interval'];
$limit = empty($options['limit']) ? LIMIT_ALL : (int)$options['limit'];
$update_interval = empty($options['update-interval']) ? null : (int)$options['update-interval'];
$call_interval = empty($options['call-interval']) ? null : (int)$options['call-interval'];

if($update_interval !== null && $call_interval !== null && $limit === LIMIT_ALL && $update_interval >= $call_interval) {
if ($update_interval !== null && $call_interval !== null && $limit === LIMIT_ALL && $update_interval >= $call_interval) {

$feeds_count = \PicoTools\singleton('db')->table('feeds')->count();
$limit = ceil($feeds_count / ( $update_interval / $call_interval )) ; // compute new limit
}
$limit = ceil($feeds_count / ($update_interval / $call_interval)); // compute new limit
}

Model\update_feeds($limit);
}
15 changes: 9 additions & 6 deletions miniflux/model.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ function import_feed($url)
return false;
}


function update_feeds($limit = LIMIT_ALL)
{
$feeds_id = get_feeds_id($limit);
Expand Down Expand Up @@ -135,6 +136,7 @@ function update_feed($feed_id)
APP_USERAGENT
);

// Update the `last_checked` column each time, HTTP cache or not
update_feed_last_checked($feed_id);

if (! $resource->isModified()) {
Expand Down Expand Up @@ -166,13 +168,12 @@ function get_feeds_id($limit = LIMIT_ALL)
$table_feeds = \PicoTools\singleton('db')->table('feeds')
->asc('last_checked');

if($limit !== LIMIT_ALL) {
if ($limit !== LIMIT_ALL) {

$table_feeds->limit((int)$limit);
}

return $table_feeds->listing('id', 'id');

}


Expand All @@ -193,24 +194,26 @@ function get_feed($feed_id)
->findOne();
}

function update_feed_last_checked($feed_id) {

function update_feed_last_checked($feed_id)
{
\PicoTools\singleton('db')
->table('feeds')
->eq('id', $feed_id)
->save(array(
'last_checked' => time(),
'last_checked' => time()
));
}


function update_feed_cache_infos($feed_id, $last_modified, $etag)
{
\PicoTools\singleton('db')
->table('feeds')
->eq('id', $feed_id)
->save(array(
'last_modified' => $last_modified,
'etag' => $etag,
'last_checked' => time(),
'etag' => $etag
));
}

Expand Down
2 changes: 2 additions & 0 deletions miniflux/schema.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

namespace Schema;


function version_5($pdo)
{
$pdo->exec('ALTER TABLE feeds ADD COLUMN last_checked INTEGER');
}


function version_4($pdo)
{
$pdo->exec("CREATE INDEX idx_status ON items(status)");
Expand Down

0 comments on commit d21b061

Please sign in to comment.