CodeIgniter Cron Job通过Cpanel

时间:2013-03-21 21:47:38

标签: codeigniter cron

好的,我查看了所有其他帖子,并完成了他们已经完成的工作以及手册中的内容,我无法想象我的生活。 正在通过电子邮件将cron作业的结果发送到我的一封电子邮件中。它正在做的就是打印出布局的html标记...并打印基页内容......就像它没有注册任何内容一样。

php /home/jdstable/public_html/dev/index.php cron decrease_pets_stats

这是我的命令行..我尝试用user / local / bin / php替换php,但它没有用。问题是我有其他cron作业运行程序PHP代码与PHP路径/到/ cron.php工作FINE ...但它不适用于CI ..

我的控制器是Cron,我的方法是decrease_pets_stats ..

//decrease pets stats
public function decrease_pets_stats() {
$this->load->model('Cron_model', 'cron');
    $this->cron->decrease_pets_stats();
    echo 'Decreased pet stats';
}

以下是该方法的逻辑:

//decrease pets stats
//runs every hour
public function decrease_pets_stats() {
    $this->db->set('hunger', 'hunger - 5');
    $this->db->set('happiness', 'happiness - 5');
    $this->db->set('loyalty', 'loyalty - 5');
    $this->db->update('user_creature');
}

有谁知道为什么只打印布局标记?我的构造函数看起来像这样:

public function __construct() {
        parent::__construct();
        if( ! $this->input->is_cli_request()) show_error('Direct access is not allowed');

        $this->load->model('Cron_model', 'cron');
    }

我的父构造函数包含相当多的东西(加载帮助程序和库,以及在用户登录后获取用户信息的情况。

在打开控制器Cron类之前,它是否位于控制器顶部是否重要?

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

5 个答案:

答案 0 :(得分:6)

您使用的默认PHP安装可能编译为CGI-FCGI,而不是CLI。这取决于您的主机和/或服务器,但您需要搜索命令行界面的PHP安装,然后在您的cron作业中使用它。我在Hostmonster上遇到了完全相同的问题,而我的cron命令最终成了:

/ramdisk/bin/php5-cli ~/public_html/sitefolder/index.php controller method

对我来说,我需要的PHP是/ramdisk/bin/php5-cli

答案 1 :(得分:5)

适用于CodeIgniter 2.2.0

您可以尝试以下两种方法:

  1. php-cli /home/username/public_html/index.php controller method
  2. wget http://www.example.com/controller/method
  3. 或在你的情况下

    1. php-cli /home/username/public_html/index.php Cron decrease_pets_stats
    2. wget http://www.example.com/Cron/decrease_pets_stats
    3. 它对我很好.. 干杯!

答案 2 :(得分:2)

有同样的问题,在尝试了我能做的任何事情后,显而易见的...... / usr / local / bin / php /absolute/path/to/index.php cron

答案 3 :(得分:1)

/ usr / local / bin / php /home/jdstable/public_html/dev/index.php cron decrease_pets_stats

这解决了它。

答案 4 :(得分:0)

首先,您需要从phpinfo document_root文件名

中找到路径

php5 /home/abc/public_html/index.php folder_name控制器功能