Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Scheduled task not executing


Reply


4 Posts   786 Views

Avatar
jpmcc

Community Member, 14 Posts

3 November 2011 at 1:26am

Hello.

I have a daily scheduled task successfully running on the site I am working on, which is great. However, I need to implement another scheduled task at a different frequency, so I created a task subclassing the QuarterHourlyTask and set the cron to run every 15 minutes. I implemented it exactly the same way as the daily task except for the different parent.

However, if I execute on the command line:

/path/to/php /path/to/webroot/sapphire/cli-script.php QuarterHourlyTask

Only

QuarterHourlyTask

is echoed implying that my subclass was not found. I've rebuilt the manifest.

Looking at CliController, it takes the class specified, finds all the subclasses and loops through them, echoing out the classname as it goes. Works fine for DailyTask. If, via a browser, I create a test function to list out the subclasses of QuarterHourlyTask, my task is listed, however when running from the command line, it isn't found.

Works fine on my local environment.

Anyone had this sort of thing and sorted it? It is probably something simple, but at the minute I just can see it.

Thanks,
Jason.

Avatar
jpmcc

Community Member, 14 Posts

3 November 2011 at 9:21pm

Edited: 03/11/2011 9:22pm

Just a further observation.

I have added some new functionality to the site that is all functioning well when viewed via the admin interface and the front end. However, in my daily task that was executed this morning (this is the task that works), a fatal error was thrown that one of the new classes that I have added (and is working), was not found.

I do recall that when I previously added a report, although working nicely in the admin, the next daily task run complained that it didn't exist, (or rather that it wasn't a child of SS_Report). I assume the project _config.php was being parsed and that is where the report was being registered with the ReportAdmin. My new class, that is the focus of the current error, is also referenced in the project _config.php where the DataObjectManager SortableDataObject is used.

This leads me to believe there is some difference in the manifest information that the CliController uses and the standard website, that seems to even out over some time, as the previously mentioned Report error just disappeared.

Can anyone shed any light?

Avatar
Willr

Forum Moderator, 5513 Posts

4 November 2011 at 6:27pm

Tried passing a flush=1 to the script via cli? There are seperate manifest files for cli and_www,

/path/to/php /path/to/webroot/sapphire/cli-script.php QuarterHourlyTask "?flush=1"

Avatar
jpmcc

Community Member, 14 Posts

4 November 2011 at 9:16pm

Thanks.

I'd just this second found that out and tried flush=all and bingo, then logged in here to add my findings, but you got there first!

At first I hadn't noticed in the silverstripe-cache directory the two files "manifest-main" and "manifest-cli-script", which obviously would explain what I'd been seeing. Then a quick revisit to the commandline docs and seeing that $_GET params can be passed in as you describe, I thought I'd give flush a go. Sorted.

Just for completeness:

/path/to/php /path/to/webroot/sapphire/cli-script.php QuarterHourlyTask flush=all

The only question remains is how the manifest was previously built and the report error that I had noticed seemed to disappear by itself, as I didn't carry out a flush then, yet the DailyTask had been running for a while. That answer is only required out of interest now I know that I need to carry out a manifest rebuild for cli as well as www when I add new stuff that impacts on _config.php