わかりました。他のすべてのスレッドを見て、彼らが行ったこととマニュアルに記載されていることを正確に実行しましたが、これを一生理解することはできません。cronジョブの結果は、私の電子メールの1つに電子メールで送信されています。レイアウトのhtmlマークアップを印刷するだけです...そしてベースページのコンテンツを印刷します...それは何も登録していないようです。
php /home/jdstable/public_html/dev/index.php cron decrease_pets_stats
これが私のコマンドラインです。phpをuser/local / bin / phpに置き換えてみましたが、機能しませんでした。問題は、php path / to / cron.phpでFINEを動作させる手続き型PHPコードで実行されている他のcronジョブがあるということです...しかし、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');