Laravel 4でcronジョブを設定する方法と、そのために職人で実行する必要のあるコマンドを見つけようとしています。
Laravel 3にはありましたがTasks
、これらはもう存在しないようで、その方法に関するドキュメントはありません...
以下に、cronで使用commands
するためのチュートリアルの詳細を示します。Laravel 4
わかりやすくするために、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),
);
}
}
次の行を変更する必要があります。
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";
}
コマンドを登録する必要があります。したがってapp/start/artisan.php
、ファイルを開き、次のように1行追加します。
Artisan::add(new RefreshStats);
最後に、次のようにスケジュールされたタスクを追加できます。
crontab -e
そして、次のような行を追加します(30分ごとにコマンドを実行します)。
*/30 * * * * php path_laravel_project/artisan refresh:stats
タスクはコマンドに置き換えられました。コマンドはLaravel4と同じですが、Symfonyのコンソールコンポーネントと統合されており、以前よりもさらに強力です。
別の方法として、コマンドが気に入らない場合は、非公式のLaravel 4 cronパッケージがあります:https ://github.com/liebig/cron
OK、これはlaravel4.2でcronを設定するのに便利だと思いました。