Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create cronjob with Zend Framework

Tags:

I am trying to write a cronjob controller, so I can call one website and have all modules cronjob.php executed. Now my problem is how do I do that?

Would curl be an option, so I also can count the errors and successes?

[Update]

I guess I have not explained it enough.

What I want to do is have one file which I can call like from http://server/cronjob and then make it execute every /application/modules/*/controller/CronjobController.php or have another way of doing it so all the cronjobs aren't at one place but at the same place the module is located. This would offer me the advantage, that if a module does not exist it does not try to run its cronjob.

Now my question is how would you execute all the modules CronjobController or would you do it a completly different way so it still stays modular?

And I want to be able to giveout how many cronjobs ran successfully and how many didn't

like image 448
Thomaschaaf Avatar asked Sep 27 '08 09:09

Thomaschaaf


People also ask

What is * * * * * In cron job?

What does * mean in Cron? The asterisk * is used as a wildcard in Cron. * sets the execution of a task to any minute, hour, day, weekday, or month.

Do Cronjobs run automatically?

The cron reads the crontab (cron tables) for running predefined scripts. By using a specific syntax, you can configure a cron job to schedule scripts or other commands to run automatically.


2 Answers

After some research and a lot procrastination I came to the simple conclusion that a ZF-ized cron script should contain all the functionality of you zend framework app - without all the view stuff. I accomplished this by creating a new cronjobfoo.php file in my application directory. Then I took the bare minimum from: -my front controller (index.php) -my bootstrap.php

I took out all the view stuff and focused on keeping the environment setup, db setup, autoloader, & registry setup. I had to take a little time to correct the document root variable and remove some of the OO functionality copied from my bootstrap.

After that I just coded away.. in my case it was compiling and emailing out nightly reports. It was great to use Zend_Mail. When I was confident that my script was working the way I wanted, I just added it my crontab.

good luck!

like image 152
ispytodd Avatar answered Sep 22 '22 20:09

ispytodd


For Zend Framework I am currently using the code outlined bellow. The script only includes the portal file index.php, where all the paths, environment and other Zendy code is bootstrapped. By defining a constant in the cron script we cancel the final step , where the application is run.

This means the application is only setup, not even bootstrapped. At this point we start bootstraping the resources we need and that is that

//public/index.php  if(!defined('DONT_RUN_APP') || DONT_RUN_APP == false) {       $application->bootstrap()->run(); }  // application/../cron/cronjob.php  define("DONT_RUN_APP",true); require(realpath('/srv/www/project/public/index.php')); $application->bootstrap('config'); $application->bootstrap('db');  //cron code follows 
like image 22
gregor Avatar answered Sep 26 '22 20:09

gregor