[TYPO3-mvc] Using extbase in cron scripts / scheduler tasks

Axel Böswetter evilbmp at gmail.com
Wed Sep 1 17:22:30 CEST 2010


Hi Franz,

I found your post with instantiating a dispatcher first - seems to work, 
but only limited. I have a customized user model extending the frontend user 
model of extbase.
By simply instantiating a fake dispatcher, the framework configuration won't 
get initialized (e.g. typoscript persistence settings).
So the mapping between my user model and the fe_users table is not known 
to the framework at that time.

I tried a little with the dispatch() method of the dispatcher class, but 
there too much stuff is processed, which I don't need right now... In addition 
calling the dispatch() method results in executing of a given/ existing controller 
action of my extbase-based extension, which can be avoided by putting a fake 
action for the scheduler in the respective controller class. But that's really 
complicated.

So my solution for this problem is, that my scheduler extends the extbase 
dispatcher. Now you are able to call the initializeConfigurationManagerAndFrameworkConfiguration() 
method of the dispatcher.

Example code:

class Tx_Extkey_Tasks_MyTaskLogic extends Tx_Extbase_Dispatcher {

    public function execute(&$pObj) {
        $configuration = array(
            'settings' => '< plugin.tx_extkey.settings',
            'persistence' => '< plugin.tx_extkey.persistence',
            'view' => '< plugin.tx_extkey.view',
            '_LOCAL_LANG' => '< plugin.tx_extkey._LOCAL_LANG'
        );
        $this->initializeConfigurationManagerAndFrameworkConfiguration($configuration);
        self::$extbaseFrameworkConfiguration['persistence']['storagePid'] 
= '10';    // storage pid of user records

        $this->userRepository = t3lib_div::makeInstance('Tx_Extkey_Domain_Repository_UserRepository');

        $this->feUserObj = $this->userRepository->findByUid((int)$this->feUserUid);

        debug($this->feUserObj);

        return TRUE;
    }

}


As my original scheduler task class already extends the tx_scheduler_Task 
class, you have to outsource the business logic to another class - as already 
mentioned in the scheduler documentation regarding searialized objects and 
out of sync errors (see: Working with serialized objects).

Hopefully, this will help somebody in the future.

Regards,
Axel Böswetter

> Hey,
> 
>> as the topic says, is there a way to use the extbase framework within
>> cron scripts respectivly scheduler tasks? What has to be instantiated
>> to
>> do so? In my special case I already have an extbase-based extension.
>> Now
>> I want to implement a scheduler task and want to make use of the
>> persistence functionality of extbase, which means using the
>> repository
>> objects of my existing extension.
>> Is this already possible? How?
> You need a fake Dispatcher for that - for details please search the
> list, it's been asked and answered already (IIRC even with "cron" or
> "scheduler" in the topic title).
> 




More information about the TYPO3-project-typo3v4mvc mailing list