laravel 5.2 の場合 app\Console\Kernel.php で管理ができ、 直接 $schedule->exec() でコマンドを実行する他、$schedule->command() を使って作成済みのコマンドを実行することも出来ます。
protected function schedule(Schedule $schedule) { $schedule->command('emails.send')->cron('0 */3 * * *'); }
上記の例では cron() で指定された時間にコマンドが実行されます。表記は「分 時 日 月 曜日」の順で、「*」は「すべて」、「5」は5の時に、「*/5」は毎を表し、分に使うと5分おきにという意味になります。曜日は 0〜7 で日曜日から始まります。「1-3」のようにすると範囲を指定でき、「1,3」のように区切ると複数指定できます。指定した時間にスケジューラー自体が実行されている必要があるため、スケジューラーを1時間おきに実行するにCronがセットされている時、Laravel側に5分おきのコマンドを設定しても1時間おきにしか実行されません。
条件に一致した時、「/usr/bin/php artisan コマンド名」のような形で実行されます。
しかし、Xserver での「/usr/bin/php」は執筆時点では PHP 4.3.9 を指すため、バージョンが古すぎて正しく実行されません。
バージョンを変更して実行するためには「/usr/bin/php5.6」や「/usr/bin/php7.0」を指定する必要があります。
変更する場合は .env ファイル内に PHP_PATH という定数を新たに書き加えます。
PHP_PATH=/usr/bin/php7.0
これによってタスクスケジューラーからの実行時にも適切なバージョンの PHP バイナリが使われます。
Similar Posts:
- [PHP]Laravelを使ったメールフォームの作り方
- [PHP]Laravel5をOS X(Mac)のローカルサーバーにインストールする
- [PHP]Laravel Valet を使った簡単なローカル環境構築
- [PHP]Laravelでメールアドレスでもユーザー名(ログインID)でもログインできるようにする
- [JS]Babelとwebpackを使いES6用のスクリプトを古いブラウザに対応させる
- [PHP]basename() はマルチバイトに対応できない?
- [PHP]エラーの発生箇所を特定する手法
- [PHP]同じ名前のファイルが存在するときは番号(連番)を付ける