mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-10-27 05:28:38 -04:00
optimisation de la mise à jour des flux --> attention, modification de la BDD nécessaire
This commit is contained in:
1 parent
acc0c6f424
commit
ba37c6e06f
4 files changed
+104
-39
No files matched your search
@@ -23,6 +23,7 @@ class feedController extends ActionController {
|
||||
'name' => $feed->name (),
|
||||
'website' => $feed->website (),
|
||||
'description' => $feed->description (),
|
||||
'lastUpdate' => time ()
|
||||
);
|
||||
$feedDAO->addFeed ($values);
|
||||
|
||||
@@ -68,30 +69,44 @@ class feedController extends ActionController {
|
||||
$feedDAO = new FeedDAO ();
|
||||
$entryDAO = new EntryDAO ();
|
||||
|
||||
$feeds = $feedDAO->listFeeds ();
|
||||
$feeds = $feedDAO->listFeedsOrderUpdate ();
|
||||
|
||||
// pour ne pas ajouter des entrées trop anciennes
|
||||
$nb_month_old = $this->view->conf->oldEntries ();
|
||||
$date_min = time () - (60 * 60 * 24 * 30 * $nb_month_old);
|
||||
|
||||
$i = 0;
|
||||
foreach ($feeds as $feed) {
|
||||
$feed->load ();
|
||||
$entries = $feed->entries ();
|
||||
|
||||
foreach ($entries as $entry) {
|
||||
$values = array (
|
||||
'id' => $entry->id (),
|
||||
'guid' => $entry->guid (),
|
||||
'title' => $entry->title (),
|
||||
'author' => $entry->author (),
|
||||
'content' => $entry->content (),
|
||||
'link' => $entry->link (),
|
||||
'date' => $entry->date (true),
|
||||
'is_read' => $entry->isRead (),
|
||||
'is_favorite' => $entry->isFavorite (),
|
||||
'id_feed' => $feed->id ()
|
||||
);
|
||||
$entryDAO->addEntry ($values);
|
||||
if ($entry->date (true) >= $date_min) {
|
||||
$values = array (
|
||||
'id' => $entry->id (),
|
||||
'guid' => $entry->guid (),
|
||||
'title' => $entry->title (),
|
||||
'author' => $entry->author (),
|
||||
'content' => $entry->content (),
|
||||
'link' => $entry->link (),
|
||||
'date' => $entry->date (true),
|
||||
'is_read' => $entry->isRead (),
|
||||
'is_favorite' => $entry->isFavorite (),
|
||||
'id_feed' => $feed->id ()
|
||||
);
|
||||
$entryDAO->addEntry ($values);
|
||||
}
|
||||
}
|
||||
|
||||
$feedDAO->updateLastUpdate ($feed->id ());
|
||||
|
||||
$i++;
|
||||
if ($i >= 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$entryDAO->cleanOldEntries ($this->view->conf->oldEntries ());
|
||||
$entryDAO->cleanOldEntries ($nb_month_old);
|
||||
|
||||
// notif
|
||||
$notif = array (
|
||||
@@ -125,26 +140,38 @@ class feedController extends ActionController {
|
||||
);
|
||||
$catDAO->addCategory ($values);
|
||||
}
|
||||
|
||||
$nb_month_old = $this->view->conf->oldEntries ();
|
||||
$date_min = time () - (60 * 60 * 24 * 30 * $nb_month_old);
|
||||
|
||||
$i = 0;
|
||||
foreach ($feeds as $feed) {
|
||||
$feed->load ();
|
||||
$entries = $feed->entries ();
|
||||
|
||||
// Chargement du flux
|
||||
foreach ($entries as $entry) {
|
||||
$values = array (
|
||||
'id' => $entry->id (),
|
||||
'guid' => $entry->guid (),
|
||||
'title' => $entry->title (),
|
||||
'author' => $entry->author (),
|
||||
'content' => $entry->content (),
|
||||
'link' => $entry->link (),
|
||||
'date' => $entry->date (true),
|
||||
'is_read' => $entry->isRead (),
|
||||
'is_favorite' => $entry->isFavorite (),
|
||||
'id_feed' => $feed->id ()
|
||||
);
|
||||
$entryDAO->addEntry ($values);
|
||||
|
||||
// on ajoute les entrées que de 10 flux pour limiter un peu la charge
|
||||
// si on ajoute pas les entrées du flux, alors on met la date du dernier update à 0
|
||||
$update = 0;
|
||||
$i++;
|
||||
if ($i < 10) {
|
||||
$update = time ();
|
||||
$entries = $feed->entries ();
|
||||
foreach ($entries as $entry) {
|
||||
if ($entry->date (true) >= $date_min) {
|
||||
$values = array (
|
||||
'id' => $entry->id (),
|
||||
'guid' => $entry->guid (),
|
||||
'title' => $entry->title (),
|
||||
'author' => $entry->author (),
|
||||
'content' => $entry->content (),
|
||||
'link' => $entry->link (),
|
||||
'date' => $entry->date (true),
|
||||
'is_read' => $entry->isRead (),
|
||||
'is_favorite' => $entry->isFavorite (),
|
||||
'id_feed' => $feed->id ()
|
||||
);
|
||||
$entryDAO->addEntry ($values);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Enregistrement du flux
|
||||
@@ -155,6 +182,7 @@ class feedController extends ActionController {
|
||||
'name' => $feed->name (),
|
||||
'website' => $feed->website (),
|
||||
'description' => $feed->description (),
|
||||
'lastUpdate' => $update
|
||||
);
|
||||
$feedDAO->addFeed ($values);
|
||||
}
|
||||
|
||||
+34
-1
@@ -7,6 +7,7 @@ class Feed extends Model {
|
||||
private $name = '';
|
||||
private $website = '';
|
||||
private $description = '';
|
||||
private $lastUpdate = 0;
|
||||
|
||||
public function __construct ($url) {
|
||||
$this->_url ($url);
|
||||
@@ -37,6 +38,9 @@ class Feed extends Model {
|
||||
public function description () {
|
||||
return $this->description;
|
||||
}
|
||||
public function lastUpdate () {
|
||||
return $this->lastUpdate;
|
||||
}
|
||||
public function nbEntries () {
|
||||
$feedDAO = new FeedDAO ();
|
||||
return $feedDAO->countEntries ($this->id ());
|
||||
@@ -74,6 +78,9 @@ class Feed extends Model {
|
||||
}
|
||||
$this->description = $value;
|
||||
}
|
||||
public function _lastUpdate ($value) {
|
||||
$this->lastUpdate = $value;
|
||||
}
|
||||
|
||||
public function load () {
|
||||
if (!is_null ($this->url)) {
|
||||
@@ -130,7 +137,7 @@ class Feed extends Model {
|
||||
|
||||
class FeedDAO extends Model_pdo {
|
||||
public function addFeed ($valuesTmp) {
|
||||
$sql = 'INSERT INTO feed (id, url, category, name, website, description) VALUES(?, ?, ?, ?, ?, ?)';
|
||||
$sql = 'INSERT INTO feed (id, url, category, name, website, description, lastUpdate) VALUES(?, ?, ?, ?, ?, ?, ?)';
|
||||
$stm = $this->bd->prepare ($sql);
|
||||
|
||||
$values = array (
|
||||
@@ -140,6 +147,7 @@ class FeedDAO extends Model_pdo {
|
||||
$valuesTmp['name'],
|
||||
$valuesTmp['website'],
|
||||
$valuesTmp['description'],
|
||||
$valuesTmp['lastUpdate'],
|
||||
);
|
||||
|
||||
if ($stm && $stm->execute ($values)) {
|
||||
@@ -171,6 +179,22 @@ class FeedDAO extends Model_pdo {
|
||||
}
|
||||
}
|
||||
|
||||
public function updateLastUpdate ($id) {
|
||||
$sql = 'UPDATE feed SET lastUpdate=? WHERE id=?';
|
||||
$stm = $this->bd->prepare ($sql);
|
||||
|
||||
$values = array (
|
||||
time (),
|
||||
$id
|
||||
);
|
||||
|
||||
if ($stm && $stm->execute ($values)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteFeed ($id) {
|
||||
$sql = 'DELETE FROM feed WHERE id=?';
|
||||
$stm = $this->bd->prepare ($sql);
|
||||
@@ -209,6 +233,14 @@ class FeedDAO extends Model_pdo {
|
||||
return HelperFeed::daoToFeed ($stm->fetchAll (PDO::FETCH_ASSOC));
|
||||
}
|
||||
|
||||
public function listFeedsOrderUpdate () {
|
||||
$sql = 'SELECT * FROM feed ORDER BY lastUpdate';
|
||||
$stm = $this->bd->prepare ($sql);
|
||||
$stm->execute ();
|
||||
|
||||
return HelperFeed::daoToFeed ($stm->fetchAll (PDO::FETCH_ASSOC));
|
||||
}
|
||||
|
||||
public function listByCategory ($cat) {
|
||||
$sql = 'SELECT * FROM feed WHERE category=? ORDER BY name';
|
||||
$stm = $this->bd->prepare ($sql);
|
||||
@@ -254,6 +286,7 @@ class HelperFeed {
|
||||
$list[$key]->_name ($dao['name']);
|
||||
$list[$key]->_website ($dao['website']);
|
||||
$list[$key]->_description ($dao['description']);
|
||||
$list[$key]->_lastUpdate ($dao['lastUpdate']);
|
||||
}
|
||||
|
||||
return $list;
|
||||
|
||||
@@ -21,15 +21,15 @@ function slide (new_active, old_active) {
|
||||
new_active.addClass ("active");
|
||||
|
||||
if (hide_posts) {
|
||||
old_active.children (".content").slideUp (200);
|
||||
new_active.children (".content").slideDown (200, function () {
|
||||
old_active.children (".content").slideUp (500);
|
||||
new_active.children (".content").slideDown (500, function () {
|
||||
$.smoothScroll({
|
||||
offset: new_active.position ().top
|
||||
offset: new_active.position ().top - 50
|
||||
});
|
||||
});
|
||||
} else {
|
||||
$.smoothScroll({
|
||||
offset: new_active.position ().top + 25
|
||||
offset: new_active.position ().top - 50
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,6 +184,7 @@ form {
|
||||
}
|
||||
#main_aside {
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
#categories {
|
||||
height: 69%;
|
||||
@@ -200,11 +201,14 @@ form {
|
||||
vertical-align: top;
|
||||
}
|
||||
#top {
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 85%;
|
||||
background: #eee;
|
||||
border-bottom: 1px solid #aaa;
|
||||
box-shadow: 0 1px 3px #aaa;
|
||||
text-align: center;
|
||||
z-index: 0;
|
||||
}
|
||||
#top a {
|
||||
display: inline-block;
|
||||
@@ -218,7 +222,7 @@ form {
|
||||
text-decoration: none;
|
||||
}
|
||||
#stream {
|
||||
padding: 0;
|
||||
padding: 50px 0 0;
|
||||
}
|
||||
#main .table {
|
||||
display: table;
|
||||
|
||||
Reference in new issue
Block a user