Nu ik ook de “reizen” blogs heb toegevoegd aan de “saveall” versie van de importer, ontstaan er vreemde problemen.
Reisblogs beslaan maar een klein percentage van het geheel, dus in eerste instantie viel de bug niet op, omdat hij ook nog eens slechts een klein deel van de reisblogs trof.
Wat is het probleem :
De importer is herstartbaar. Dat is maar goed ook, want het geheugen van wordpress loopt door allerlei bugs in wordpress zelf, langzaam vol. Na een aantal uren gaat de importer onderuit. Ik herstart hem dan, en hij gaat verder waar hij was.
De importer gebruikt de VKblog index pagina om een lijst te maken met de URL’s van alle blogs die hij moet importeren. Op de indexpagina staan timestamps, en de oorspronkelijke importer gebruikt die timestamps om te controleren of hij een blog al heeft.
Nu is het importeren een tweetraps kwestie. Om de comments te kunnen attachen, moet je een id hebben, al voordat je het hele blog hebt ingelezen. Dus maakt de importer aan de hand van de informatie uit de index een lege post aan, die in de loop van het importeren wordt ge-update met een titel, inhoud, tags, afbeeldingen, etc. Wordt de importer geherstart, dan zoekt hij aan de hand van de timestamp in de index of hij een bericht al heeft.
Al gauw bleek dat een bug op te leveren : het werkt heel goed tegen dubbelposts, maar er bleken mensen te zijn die een voorraadje berichten in één keer op hun blog kwakten, wat door de importer ten onrechte als dubbelpost werd gedetecteerd. Dus heb ik er een controle aan toegevoegd : de URL van het oorspronkelijke bericht wordt mee bewaard.
Toen kwamen de reisblogs. Compleet andere berichtlayout, maar met wat moeite kon ik er wel hetzelfde uit destilleren als uit een gewoon blog : tags, text, afbeeldingen, commentaar, avatars etc.
Toen kwamen de reisblogs zonder index bij vkblog. De reis-index is totaal anders opgebouwd dan die van vkblog. Je moet bladeren, in plaats van dat je de complete index in één keer ziet.
Er was ook nog het probleem Joszua. De index is bij hem zo groot, dat vkblog hem niet meer aan kan. Bij Joszua moet je met de hand jaar voor jaar importeren.
Toen ik een importer maakte voor users, kon in in een keer alle 8000 bloggersnamen importeren, en die met een extra lus een voor een helemaal importeren. Dat zou niet al te moeilijk moeten zijn, dacht ik.
Toch wel. Door de blogs van alle users in één wordpress installatie te stoppen, ontstonden nieuwe problemen. 8.000 users met een category per maand betekent zoveel categories en tags dat wordpress sommige dingen gewoon niet meer kan, omdat het teveel geheugen kost, of teveel tijd. Er ontstonden ook vreemde fouten die in de testsituatie niet waren opgetreden, en die ook niet te reproduceren waren.
Ik ontdek net weer een nieuwe bug, die ik wel kan oplossen ( hoop ik ) Gebruiker “jeetjemina” heeft een gemengd blog. Om een of andere reden struikelt de importer over een bijdrage. Bij de herstart haalt de importer het hele blog opnieuw binnen, en struikelt opnieuw op dezelfde plek. Hoe kan dat ? Wat blijkt : de “gemengde” index geeft de tijd tot op de minuut nauwkeurig, maar het blog zelf bevat alleen de datum. De importer vult als tijd : 12:00 in bij de update. Bij de herstart is het blog vervolgens niet terug te vinden, en wordt vrolijk opnieuw geïmporteerd. Nu nog even uitzoeken waarom hij struikelt over die ene bijdrage….
Leave a Reply