【问题标题】:CodeIgniter Cron Job through Cpanel通过 Cpanel 的 CodeIgniter Cron 作业
【发布时间】:2013-03-11 15:07:21
【问题描述】:

好的,我查看了其他所有线程,并完全按照他们所做的以及手册中的说明做了,我终其一生都无法弄清楚这一点。 cron 作业的结果正在通过电子邮件发送到我的一封电子邮件。它所做的只是打印出布局的 html 标记......并打印基本页面内容......就像它没有注册任何东西一样。

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

那是我的命令行。我也尝试用 user/local/bin/php 替换 php,但没有成功。问题是我还有其他 cron 作业运行程序 PHP 代码,这些代码可以与 php path/to/cron.php 一起正常工作...但它不适用于 CI ..

我的控制器是 Cron,我的方法是 reduction_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');

【问题讨论】:

    标签: codeigniter cron


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      对于 CodeIgniter 2.2.0

      你可以试试这两种方法:

      1. php-cli /home/username/public_html/index.php controller method
      2. wget http://www.example.com/controller/method

      或根据您的情况

      1. php-cli /home/username/public_html/index.php Cron decrease_pets_stats
      2. wget http://www.example.com/Cron/decrease_pets_stats

      对我来说很好用.. 干杯!

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        这解决了它。

        【讨论】:

          【解决方案5】:

          这里是解决方案,首先你需要从 phpinfo document_root 文件名中找到路径

          php5 /home/abc/public_html/index.php 文件夹名称控制器函数

          【讨论】:

            猜你喜欢
            • 2015-01-21
            • 1970-01-01
            • 2017-11-21
            • 2016-11-08
            • 2011-06-24
            • 1970-01-01
            • 2018-02-07
            • 2013-03-05
            • 2011-01-15
            相关资源
            最近更新 更多