CMSMS pseudocron
CMS Made Simple heeft sinds de komst van versie 1.8 de mogelijkheid om taken automatisch uit te laten voeren. De Pseudocron functionaliteit van CMSMS wordt in deze blog nader toegelicht.
Standaard pseudocron script
Het legen van de 'cache / buffer' van een website is geautomatiseerd via een pseudocron script.
In de /admin is dit in te stellen via Websitebeheer -> Algemene Instellingen [Uitgebreide setup]
Leeg de buffer (Clear Cache) iedere N dagen: {1}
Sinds 1.8 is er ook een andere optie bijgekomen:
Geplande taak uitvoering (Cronjobs):
{xx Minuten}
Deze instellingen bepaald hoe vaak het CMS zal proberen bepaalde ingestelde taken uit te voeren.
Een standaard CMSMS installatie is uitgerust met de 'ClearCache.task' deze is te vinden onder: $web_root/lib/tasks/class.ClearCache.task.php
Een eigen pseudocron script
Wanneer jouw webhost niet de mogelijkheid biedt om cronjobs te draaien. Is het mogelijk om in de map $web_root/lib/tasks/ custom tasks te plaatsen.
Bijvoorbeeld: $web_root/lib/tasks/class.MailAdmin.task.php
<?php
class MailAdminTask implements CmsRegularTask
{
const LASTEXECUTE_SITEPREF = 'MailAdmin_lastexecute';
public function get_name()
{
return 'Mail Admin Task';
}
public function get_description()
{
return 'Mail Admin Task';
}
public function test($time = '')
{
// do we need to do this task.
if( !$time ) $time = time();
$last_execute = get_site_preference(self::LASTEXECUTE_SITEPREF,0);
if( ($time) >= $last_execute )
{
return TRUE;
}
return FALSE;
}
public function execute($time = '')
{
if( !$time ) $time = time();
global $gCms;
$bodytext = 'Testing the CMSMS Pseudocron Granularity functionality.';
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress('spam@nospam.com');
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(false);
$cmsmailer->SetSubject('Pseudocron: ' .strftime("%d-%m-%Y %H:%M:%S"));
$cmsmailer->Send();
return TRUE;
}
public function on_success($time = '')
{
if( !$time ) $time = time();
set_site_preference(self::LASTEXECUTE_SITEPREF,$time);
}
public function on_failure($time = '')
{
if( !$time ) $time = time();
// nothing here.
}
}
?>