CRON Script execution problem on server

I created a CRON script which simply goes to a controller action and runs the code in that action:


/localhost/site/sendemails

On my hosting server they don’t allow http URLs for the CRON script, so I had to put this in an absolute format from the location of the file on the server. So I did it like this:


/usr/bin/wget /home/sites/mysite.co.uk/public_html/site/sendemails -q

But again did not work. I contacted the tech support who advised as it not at a http request I need explicitly tell it what script to run. So I realised I was using path format URL and it was obviously not rewriting the URL through htaccess. So I did it like this:


/usr/bin/wget /home/sites/mysite.co.uk/public_html/index.php?r=site/sendemails -q

But this has not worked I’m afraid. It seems that you can’t even pass GET variables in to the script via CRON. So what can I do about this?

Create a console command - that definitely works.

It’s a lot better than wget.

First, read this: http://www.yiiframework.com/doc/guide/1.1/en/topics.console

Second, I don’t think wget is what you need.

A command should look like:

But first, read about CConsoleCommand.

OK guys, cheers. So I’m going to create a Console script now. The controller action I currently have in SiteController is:


public function actionSendemails()

{

	Enquiry::model()->sendInitialEmails();

	Enquiry::model()->sendReminderEmails();

}

Will this still work in my Console script if I move it there (and change the function name to actionIndex)?

This is what I have in a cron:


/usr/local/php5/bin/php /home/me/webroot/console.php test arg1 arg2

I made a console.php:


<?php


$hostname = $_SERVER['SERVER_NAME'];

// change the following paths if necessary

$yii=dirname(__FILE__).'/../yii/framework/yii.php';


$config=dirname(__FILE__).'/protected/config/console.php';


// remove the following lines when in production mode

defined('YII_DEBUG') or define('YII_DEBUG',true);

// specify how many levels of call stack should be shown in each log message

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);


require_once($yii);

$app = Yii::createConsoleApplication($config);


Yii::app()->setTimeZone("UTC");

$app->run();



As you can see, I am using a console config file because it’s not possible to use a web app configuration in console mode.

And then you just create a CConsoleCommand in app/protected/commands.