user1409508 user1409508 - 5 months ago 296
PHP Question

How to run cron job with zend framework 2

I have application built in Zend Framework 2. I would like to set cron job for updating my products. I know scripts such as this should be run from outside of public folder, but unfortunately my script in cron needs to use framework files.

How can I do this?

The only way I figured out is to run script from outside of public folder then add some hash or password and redirect to

www.domain.com/cron/test


So I will have all framework functionality.

Will it be secure? Maybe there is a other way?

Answer

I strongly recommend to use CLI for such requirement.

  1. Create a ConsoleController with an updateAction() inside the application module.
  2. Add a console route to your application module's module.config.php:

    array(
        'router' => array(
            'routes' => array(
            ...
            )
        ),
    
    'console' => array(
        'router' => array(
            'routes' => array(
                'cronroute' => array(
                    'options' => array(
                        'route'    => 'updateproducts',
                        'defaults' => array(
                            'controller' => 'Application\Controller\Console',
                            'action' => 'update'
                        )
                    )
                )
            )
        )
    )
    );
    
  3. Now open the terminal and

    $ cd /path/to/your/project
    $ php public/index.php updateproducts
    

Thats all. Hope it helps.