From ba37c6e06fc7db2d33eab0a5b120c0186039a1ca Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 8 Dec 2012 13:28:53 +0100 Subject: optimisation de la mise à jour des flux --> attention, modification de la BDD nécessaire MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/feedController.php | 92 +++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 32 deletions(-) (limited to 'app/controllers/feedController.php') diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index d459ba0cb..9a56e97cf 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -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); } -- cgit v1.2.3