Posted in feedcron.
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 https://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 https://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
- https://www.example.com/administrator/components/com_datafeeds/cron/feedcron.php?feed=feed1
- https://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
https://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):
https://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