Run CI from cron

#1
[eluser]Tri Dang[/eluser]
Hello everybody,

For example, I have a Cron controller like:

Code:
class Cron extends Controller{
  function my_method(){
  }
}

I can call methods of this controller from web browsers with no problem. But now I want to call it from cron jobs. Assume the path to root directory (which stores system folder) is /path. What do I put in cron to call my_method() (and load all CI stuff)?

Thanks in advance.

#2
[eluser]cwt137[/eluser]
Why not use wget in your cron job?
Code:
wget http://localhost/cron/my_function

#3
[eluser]Nick Husher[/eluser]
That has the overhead of requiring everything to go through a net port. Check out MY URI on the CI wiki. It gives you straightforward access to a lot of CI functionality.

#4
[eluser]cwt137[/eluser]
Cool.

#5
[eluser]eger[/eluser]
That MY URI looks neat and simplifies a little bit of what I previously found. I had copied and modified the index.php to call a specific controller and method. I placed it in application/cli (though it could probably be somewhere more secure) and added PATH_INFO and absolute folder paths:
Code:
<?php

$_SERVER['PATH_INFO'] = '/graph/plot';
error_reporting(E_ALL);
$system_folder = "/home/stats/public_html/stats";
$application_folder = "/home/stats/public_html/stats/application";

if (strpos($system_folder, '/') === FALSE)
{
    if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
    {
        $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    }
}
else
{
    // Swap directory separators to Unix style for consistency
    $system_folder = str_replace("\\", "/", $system_folder);
}

define('EXT', '.'.pathinfo(__FILE__, PATHINFO_EXTENSION));
define('FCPATH', __FILE__);
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
define('BASEPATH', $system_folder.'/');

if (is_dir($application_folder))
{
    define('APPPATH', $application_folder.'/');
}
else
{
    if ($application_folder == '')
    {
        $application_folder = 'application';
    }

    define('APPPATH', BASEPATH.$application_folder.'/');
}

require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;

Then I would add a cronjob for "/usr/bin/php -q /home/stats/public_html/stats/application/cli/logprocess.php".

#6
[eluser]Tri Dang[/eluser]
Thanks very much for all the replies!

I check them now and let you know the result.

#7
[eluser]Tri Dang[/eluser]
Sorry replying late.

I used MY_URI library from Nick Husher and it works great.

Thanks again!


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.