1

わかりました。他のすべてのスレッドを見て、彼らが行ったこととマニュアルに記載されていることを正確に実行しましたが、これを一生理解することはできません。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');
4

5 に答える 5

6

使用しているデフォルトの PHP インストールは、CLI 用ではなく、おそらく CGI-FCGI としてコンパイルされています。ホストやサーバーによって異なりますが、コマンド ライン インターフェイスの PHP インストールを検索し、それを cron ジョブで使用する必要があります。Hostmonsterでもまったく同じ問題が発生し、cronコマンドは次のようになりました。

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

私にとって、必要な PHP は/ramdisk/bin/php5-cli.

于 2013-03-21T22:36:56.807 に答える
2

同じ問題があり、私ができることは何でも試した後、明らかにうまくいきました... /usr/local/bin/php /absolute/path/to/index.php cron

于 2013-08-24T07:32:41.877 に答える
1

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

これで修正されました。

于 2013-03-22T15:39:06.993 に答える
0

まず、phpinfo document_root ファイル名からパスを見つける必要があります。

php5 /home/abc/public_html/index.php folder_name コントローラー関数

于 2015-04-16T11:15:01.923 に答える