繁体   English   中英

500带有Codeigniter的内部服务器错误Cron作业

[英]500 Internal Server Error Cron Job with Codeigniter

我正在执行一项cron作业,该作业为数据库添加了一个值。 我正在使用Codeigniter。 我正在使用终端测试脚本。 它可以在我的本地计算机上运行(我正在使用MAMP),但是当我将其上载到服务器并运行脚本时,会出现以下错误:状态:500 Internal Server Error内容类型:text / html; 字符集= UTF-8

不管我做什么,都不会做任何不同的事情。 是什么原因造成的,我该如何解决?

编辑:

我正在使用Codeigniter 3.0.3。

Cron控制器

class Cron extends MY_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('cron_m');
    }

    public function index()
    {
        if(!$this->input->is_cli_request())
        {
            echo "This script can only be accessed via the command line" . PHP_EOL;
            return;
        }

        $data = array('value' => 'test');
        $this->cron_m->save($data);
        echo 'saved!';

    }

}

前端控制器

class Frontend_Controller extends MY_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->helper('form');
        $this->load->library('form_validation');        
     }

    public function lock()
    {
        $this->load->library('session');        
        $this->load->model('user_m');   

        // Login check
        $exception_uris = array(
            'admin/user/login',
            'admin/user/logout'
        );

        if (in_array(uri_string(), $exception_uris) == FALSE)
        {
            if ($this->user_m->loggedin() == FALSE)
            {
                $uri = $this->uri->uri_string();
                $this->session->set_tempdata('uri', $uri);

                redirect('admin/user/login');
            }
        }
    }

}

MY_Controller

class MY_Controller extends CI_Controller {

    public $data = array();

    function __construct() {

        parent::__construct();

        $this->data['errors'] = array();

    }

}

Cron_m模型

class Cron_m extends MY_Model {

    public $_table_name = 'CRON';
    protected $_order_by = 'id';

    public function __construct()
    {
        parent::__construct();
    }

}

MY_模型

class MY_Model extends CI_Model {

    public $_table_name = '';
    protected $_primary_key = 'id';
    protected $_primary_filter = 'intval';
    protected $_order_by = 'order';

    function __construct()
    {
        parent::__construct();
    }

    public function save($data, $id = NULL)
    {

        //INSERT
        if ($id === NULL)
        {           
            !isset($data[$this->_primary_key]) || $data[$this->_primary_key] = NULL;
            $this->db->set($data);
            $this->db->insert($this->_table_name);
            $id = $this->db->insert_id();
        }

        //UPDATE
        else
        {
            $filter = $this->_primary_filter;
            $id = $filter($id);
            $this->db->set($data);
            $this->db->where($this->_primary_key, $id);
            $this->db->update($this->_table_name);
        }

        return $id;

    }

}

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|assets|uploads|podcast\.xml)
RewriteRule ^(.*)$ /index.php/$1 [L]

首先在控制器中编写一个代码点火器函数。 确保满足以下条件

  • 要访问codeigniter函数,应该没有登录名
  • 在功能上,您不应使用任何会话。

然后,在服务器的cpanel中,您可以根据需要(每分钟,每小时等)设置cron。

也使用wget

wget -T 0 -O path_to_a_text_file_where_cron_will_write_errors path_to_your_script_that_should_be_run_by_cron

希望能帮助到你。

我想到了。 我只使用php命令,但是在搜索后,我通过Cpanel找到了此后CodeIgniter Cron Job 我现在使用的是php5-cli,而不是使用php,它的工作原理就像冠军。

php5-cli path/to/folder/index cron set_value

我认为cron作业只能与核心php代码一起使用,您必须制作新文件(如cron.php)并将此文件放在根目录中,并以核心php格式编写代码,然后将cron作业网址保存在cpanel上,我认为它将起作用ci的100%cron工作无法正常工作,因为我已经遇到了这个问题,请尝试这种方式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM