Werking

Dit php script zorgt voor het verversen van de gegevens in de database. Hiervoor moet het script periodiek draaien. Bijvoorbeeld dagelijks.

 

cronjob

als je hosting provider toestaat dat je rechtstreeks via de commandline of via de admin-panel een cronjob aanmaakt en je gebruik kunt maken van de commandline versie (CLI-PHP) van php dan is rechtstreeks ( dus buiten de webserver) aanroepen van de feedcron de best oplossing

0 4 * * * (cd  [pad van de feedcron];php feedcron.php)

Als je host geen php CLI heeft kun je het update script via de webserver aanroepen, wel moet er dan iets als wget, curl lynx zijn.

0 4 * * * w g e t http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php

Hier zit echter een klein addertje onder het gras. Het verwerken en met name de aktie daarvoor, het ophalen van de feeds, kost vrij veel tijd. Nu is het vrijwel altijd zo dat de maximale tijd dat een php script bezig mag zijn gelimiteerd is (max_execution_time), bijvoorbeeld op 30 seconden.

Bij een paar feeds is dit geen probleem. Maar bij vell of grote feeds loop je tegen deze beperking aan. Oplossing is dan de feedcron meerdere keren aan te roepen:

0 0-6 * * * w g e t http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php

(bovenstaande is van 0 tot 6 uur elk uur)

Of voor elke feed 1 keer

  • http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php?feed=feed1
  • http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php?feed=feed2
  • etc

Als je host wel cron toestaat er echter geen CLI-PHP is maar wel perl dan kun je het perl script dat onderaan de pagina staat gebruiken, dat roept de feeds automatisch 1 voor 1 aan.

Geen eigen cron? Diensten als www.onlinecronjobs.com bieden een online cronservice aan ( let hier op de faq)

Tips

Veel feeds pretenderen een update frequentie van een dag, in de praktijk zijn er maar weinig feeds die inderdaad zo vaak veranderen. Feeds met veel items in de sfeer van aanbiedingen of last minutes kunnen inderdaad het beste alle 4 uur ververst worden. Voor andere feeds is eens in de week of nog minder voldoende. De standaard waarde die in de feed configuratie ingevuld wordt is 3 dagen.

Handmatig gebruik

Bekijken (NU verversen) van een feed

http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php?feed=&freq=1

 

Verversen van alle feeds ( die niet in het laatste halve uur ververst zijn):

 

http://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php?freq=1800

 

Eventueel meerdere keren aanroepen. Tot de laatste regel het items in de database bevat

Grote feeds

In principe kan de parser ook (absurd) grote feeds aan. Je kunt echter tegen het time-out probleem aanlopen. Als de configuratie van je server het toelaat kun je proberen de maximale executie tijd te verhogen door de max_execution_time aan te passen in de feeds.php:

ini_set('max_execution_time',120);  

Dit werkt in ieder geval niet als je server in safe mode draait

Zie  max_execution_time en set_time_limit

Bij extreme gevallen zoals de feed van otto werkt alleen de commandline.

Perl script

Dit script vraagt aan de betreffende feedcron welke feeds een update nodig hebben en roept ze dan een voor een op. Vergelijkbaar als de cron vanuit de joomla administrator maar dan zonder joomla

cron.pl

 

 

 

 

Quick Start

Complete Joomla 2.5.x (inclusief NL) installatie met de datafeeds onderdelen. Na installatie heb je een site als deze.

Om praktische redenen is het aantal items wel beperkt. Voor de import/cron uit om alles te importeren.

 

Stap voor stap Installatie

 

  • Installeer joomla of dutch-joomla
  • Installeer eerste de nederlandse taalbestanden van joomla ( als je niet reeds de nederlandse versie genomen hebt)
  • Installeer com_datafeeds.zip via het extensions menu.
  • De component installeert ook de module en de zoek plugin. Tevens wordt er een menu item aangemaakt. Dit menu-item wordt in het zelfde menu als het 'default' menu item gezet.
  • Klik op de rode links om een import te starten.
  • Klaar.

Verder werken met de component valt in drie soorten werkzaamheden uiteen

Daarnaast moet periodiek de data geïmporteerd worden bij voorkeur via een cronjob

(zowel de volledige joomla versie als de losse component bevatten een aantal voorbeeld feeds. Vervang deze na de eerste test door je eigen)

Test omgeving

Het toevoegen van feeds is helaas niet een kwestie van knip plak en klaar, er komt wat uitproberen bij kijken. Het is niet praktisch dit op het productie systeem uit te proberen.

 

Een aparte testomgeving op de webhost is dan handig, liefst met shell toegang of een online editor zoals in sommige admin-panels te vinden is.

 

Als dat niet kan dan is het gebruik van http://www.usbwebserver.com/ te overwegen. Deze server installeer je ergens op je harde schijf ( hoeft dus niet op een usb-stick), server starten ( eventueel firewal geruststellen dat er wat servers opgestart worden) en je hebt een volwaardige WAMP webserver. Hier kun joomla installeren, de componenten, de feedcron en onbeperkt en ongestoord je gang gaan.

Handleiding installatie met usbwebserver