2015-11-28 4 views
0

Я работаю над заданием cron, которое добавляет значение в базу данных. Я использую Codeigniter. Я тестирую скрипт с помощью терминала. Он работает на моей локальной машине (я использую MAMP), но когда я загружаю его на свой сервер и запускаю сценарий, он дает мне следующую ошибку: Состояние: 500 Внутренняя ошибка сервера Тип содержимого: текст/html; charset = UTF-8500 Внутренняя ошибка сервера Cron Job с Codeigniter

Независимо от того, что я делаю, это не делает ничего другого. Что вызывает это и как я могу это исправить?

Редакция:

Я использую Codeigniter 3.0.3.

Крон Контроллер

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!'; 

    } 

} 

Frontend_Controller

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_Model

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] 
+0

Что такое версия вашего CI ?? добавить код, а также –

+0

добавил мой код и версию – speck1990

+0

Есть ли в этом сеансе сеанс ?? –

ответ

1

Я понял. Я использовал только команду php, но после поиска я нашел этот пост - CodeIgniter Cron Job through Cpanel. Вместо использования php я теперь использую php5-cli, и он работает как чемпион.

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

я думаю, хрон будет работать только с ядром PHP код, который вы должны сделать новый файл, как cron.php и поместите этот файл в корневой каталог и напишите de в основном php формате, а затем сохранить ваш cron job url на cpanel, я думаю, что он будет работать на 100% cron с ci doesn`t work, потому что я уже сталкивался с этой проблемой, пожалуйста, попробуйте этот путь.

1

Сначала напишите функцию codeigniter в контроллер. Убедитесь, что она удовлетворяет следующие критерии

  • Чтобы получить доступ к функции CodeIgniter нет Логина не должен быть там
  • В функции вы не должны использовать любой сеанс.

Затем в CPanel вашего сервера, вы можете установить хроны основанной на вашем требовании, либо каждую минуту, каждый час и т.д.

использовать также 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 

Надеется, что это помогает.

+0

Я получаю другую ошибку 'wget -T 0 -O/home4/kottkea1/public_html/fallspointechurch/assets/errors. txt /home4/kottkea1/public_html/fallspointechurch/index.php cron /home4/kottkea1/public_html/fallspointechurch/index.php: Отсутствует схема. --2015-11-27 23: 24: 33-- http: // cron/ Устранение cron ... failed: имя или услуга неизвестны. wget: не удалось разрешить адрес хоста «cron» ' – speck1990

+0

Возможно, я должен был упомянуть, что я только что начал проверять задания cron за несколько дней назад, поэтому я понятия не имею, что я делаю :) и я достаточно точно знаю о командах терминала чтобы получить меня около – speck1990

+0

в cpanel set cron за каждую минуту и ​​проверить, работает ли его там. –

Смежные вопросы