お世話になります。
【質問内容】
Mac os 10.12環境にてlaravelを利用しており、cronでの定期実行を行おうとしております。
app/console/command/TestCommnad.phpに登録したコマンドの手動での実行をした際には正常に処理されますが、
app/Http/Kerner.phpに記載したcronの定期実行が処理されません。(1行ログ出力を行う処理ですが、何も出力されない状態です。)
【環境】
Mac os 10.12
Laravel Framework 5.8.31
php PHP 7.3.6
mampにて実行
【参考にした情報】
https://readouble.com/laravel/5.8/ja/scheduling.html
https://blog.capilano-fw.com/?p=3679
https://reffect.co.jp/laravel/laravel-task-schedule-cron
【行ったこと/コード】
プロジェクトフォルダまで移動し
crontab -e で
terminal
1* * * * * cd /Applications/MAMP/htdocs/アプリ名 && php artisan schedule:run 1>> /dev/null 2>&1
を設定しました。
また、commandの中にTestCommnad.phpというファイルartisanで作り、'command:testcommand';というコマンド名(ログにテキストを1行出すのみ)を作りました。
kerner.phpでは、それを毎分実行するように記載しました。
laravelアプリ内のkerner.phpとTestCommnad.phpのコードの中身は以下です。
app/console/command/TestCommnad.phpの中身
php
1<?php 2 3namespace App\Console\Commands; 4 5use Illuminate\Console\Command; 6use Illuminate\Support\Facades\Log; 7 8 9class TestCommand extends Command 10{ 11 /** 12 * The name and signature of the console command. 13 * 14 * @var string 15 */ 16 //コマンド名を設定 17 protected $signature = 'command:testcommand'; 18 19 /** 20 * The console command description. 21 * 22 * @var string 23 */ 24 //コマンドの説明 25 protected $description = 'testcommandのコマンド説明'; 26 27 /** 28 * Create a new command instance. 29 * 30 * @return void 31 */ 32 public function __construct() 33 { 34 parent::__construct(); 35 } 36 37 /** 38 * Execute the console command. 39 * 40 * @return mixed 41 */ 42 public function handle() 43 { 44 // ここに処理を記述 45 logger()->info('testcommand実行!!.'); 46 47 } 48}
app/Http/Kerner.phpの中身。
php
1<?php 2 3namespace App\Console; 4 5use Illuminate\Console\Scheduling\Schedule; 6use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 7 8class Kernel extends ConsoleKernel 9{ 10 /** 11 * The Artisan commands provided by your application. 12 * 13 * @var array 14 */ 15 protected $commands = [ 16 \App\Console\Commands\TestCommand::class, //コマンドの登録 17 ]; 18 19 /** 20 * Define the application's command schedule. 21 * 22 * @param \Illuminate\Console\Scheduling\Schedule $schedule 23 * @return void 24 */ 25 protected function schedule(Schedule $schedule) 26 { 27 //スケジュールの登録 28 $schedule->command('command:testcommand')->everyMinute(); 29 30 } 31 // $schedule->command('inspire') 32 // ->hourly(); 33 34 35 /** 36 * Register the commands for the application. 37 * 38 * @return void 39 */ 40 protected function commands() 41 { 42 $this->load(__DIR__.'/Commands'); 43 44 require base_path('routes/console.php'); 45 } 46} 47 }
【動作確認】
・ターミナルでcrontab-lで確認 → 設定済みの下記処理が表示されます。
terminal
1* * * * * cd /Applications/MAMP/htdocs/アプリ名 && php artisan schedule:run >> /dev/null 2>&1
・手動で動作確認
php artisan command:testcommand をターミナルで実行 → 行うたび、laravelアプリ/storage/logs の今日の日付のファイルに下記ログが記載されます。
php
1[2019-08-24 03:40:54] local.INFO: testcommand実行!!. 2[2019-08-24 04:19:17] local.INFO: testcommand実行!!.
また、試しに
cd /Applications/MAMP/htdocs/cryptoapp && php artisan schedule:run >> /dev/null 2>&1
とターミナル上で直に入力し実行しても同じように上記のログが出力されます。
ーーーーーーーーーーーーーーーー
以上の状態ですが、mampサーバーの起動、laravelのphp artisan serve でのアプリ起動をしている状態でも、logファイルに自動での実行結果が反映されません。(logファイルに何も出てこない状態です)
手動実行は意図通りの動作となるので、cronの自動の処理が上手くいかないようなのですが、
確認すべきポイント、見落としていそうなポイントなどあれば、アドバイスをいただけますと幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー