16

Laravel 4でcronジョブを設定する方法と、そのために職人で実行する必要のあるコマンドを見つけようとしています。

Laravel 3にはありましたがTasks、これらはもう存在しないようで、その方法に関するドキュメントはありません...

4

4 に答える 4

37

以下に、cronで使用commandsするためのチュートリアルの詳細を示します。Laravel 4わかりやすくするために、4つのステップに分けました。


ステップ1:Laravel 4でコマンドを作成します:

php artisan command:make RefreshStats

上記のコマンドで、LaravelはRefreshStats.phpディレクトリに 名前が付けられたファイルを作成しますapp/commands/


RefreshStats.phpこれは次のようなファイルです:

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class RefreshStats extends Command {

        protected $name = 'command:name';
        protected $description = 'Command description.';

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

        public function fire(){

        }

        protected function getArguments() {
            return array(
                array('example', InputArgument::REQUIRED, 'An example argument.'),
            );
        }

        protected function getOptions() {
            return array(
                array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
            );
        }

}



ステップ2:RefreshStatsファイルの単純な「構成」:

次の行を変更する必要があります。

protected $name = 'command:name';

このようなものに:

protected $name = 'refresh:stats';

引数が必要ない場合(オプションについても同じ)、次の行を変更します。

protected function getArguments() {
      return array(
          array('example', InputArgument::REQUIRED, 'An example argument.'),
      );
}

に:

protected function getArguments() {
      return array();
}

そして今、機能に注意を払っfireてください。このコマンドは、その関数で記述されたソースコードを実行します。例:

public function fire(){
    echo "Hello world";    
}



ステップ3:コマンドを登録します:

コマンドを登録する必要があります。したがってapp/start/artisan.php、ファイルを開き、次のように1行追加します。

Artisan::add(new RefreshStats);



ステップ4:CRONスケジュールタスクを作成します。

最後に、次のようにスケジュールされたタスクを追加できます。

crontab -e

そして、次のような行を追加します(30分ごとにコマンドを実行します)。

*/30 * * * * php path_laravel_project/artisan refresh:stats



そして、すべてが自動的に機能します!

于 2015-07-22T10:09:03.690 に答える
15

タスクはコマンドに置き換えられました。コマンドはLaravel4と同じですが、Symfonyのコンソールコンポーネントと統合されており、以前よりもさらに強力です。

于 2013-01-25T11:40:50.157 に答える
4

別の方法として、コマンドが気に入らない場合は、非公式のLaravel 4 cronパッケージがあります:https ://github.com/liebig/cron

于 2013-07-25T19:05:12.790 に答える
0

OK、これはlaravel4.2でcronを設定するのに便利だと思いました。

于 2019-12-14T21:22:27.103 に答える