GlobalRSS, tedy společný feed všech blogů, které jsou registrovány v Blogportálu a mají své RSS, mi poslední dobou trochu (dost) zlobí. Proto jsem byl nucen ho promazat (několik tisíc starších příspěvků), jinak bych asi server zahltil. V čem je problém? Možná někdo bude vědět, jak to vyřešit, neb sám jsem na to nepřišel.
GlobalRSS vzniká tak, že se jednou za X minut skenují všechny registrované RSS feedy, z nich se berou příspěvky a zjišťuje se, zda už jsou nebo nejsou v GlobalRSS importované. Pokud ne, přidají se a jede se dál. Problém je v tom, že většina feedů se generuje dynamicky a lastBuildDate je nastaven vždy na aktuální čas, nikoliv na čas přidání posledního příspěvku (a nebo chybí úplně). Nelze tedy zjistit, zda ve feedu přibyl nějaký příspěvek, či ne. Proto musím při každém průchodu vzít všechny příspěvky ve všech feedech a zjistit, zda jsou či nejsou v GlobalRSS. Že je to pro server zátěž, když feedů jsou stovky a příspěvků v databázi jsou desetitisíce, je naprosto jasné. Porovnávám URI.
Ještě jsem nepřišel na algoritmus, který by významně tento proces urychlil. Proto jsem musel (zazálohovat a) promazat databázi GlobalRSS, abych trochu serveru odlehčil.
Pokud by měl někdo nějaký nápad, jak toto vyřešit, budu velice rád, když se se mnou o něj podělí. I na nějaké odměně se lze dohodnout :-). Dokud tohle nerozlousknu, nemůže se Blogportál dál rozvíjet (a že těch nápadů mám … :-)).