【Laravel-admin】Laravel-admin便利な拡張機能(Extension)たち紹介3
概要
今回は、私がLaravel-adminで構築する際に基本的に追加する拡張機能を紹介します。
第3回の今日は、「scheduling」を紹介します。
「【Laravel-admin】Laravel-admin便利な拡張機能(Extension)たち紹介1」
Laravel-Admin構築までの環境構築は、以下の記事を参考にしてください。
「【Laravel】MacにLaravelインストールしてみた(Virtalbox + Vagrant + homestead) 」
「【Laravel-admin】Laravel-adminインストールしてみた」
環境
MacBook Air (Retina, 13-inch, 2020)
メモリ: 16 GB
macOS: Big Sur バージョン 11.6.1
仮想環境
VirtualBox 6.1.28
Vagrant 2.2.19
Laravel/Homestead 11.5.0 ( Ubuntu 20.04.3 LTS, PHP 8.0.11 )
Laravel Framework 8.70.2
mysql Ver 8.0.26-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
encore/laravel-admin ^1.8
scheduling拡張機能を追加
schedulingを追加・紹介していきたいと思います。
3度目ともなると、Install&Importも慣れてきたんではないでしょうか。(^^)
参考
Link: https://github.com/laravel-admin-extensions/scheduling
Install
composer require laravel-admin-ext/scheduling
Laravel AdminへImportしていきます。
php artisan admin:import scheduling
今回は、import後に管理画面のroutesで確認してみましょう。
LINK: http://laravel-admin.test/admin/helpers/routes
Urlに以下のルーティングが追加されていることが確認できます。
・admin/scheduling
・admin/scheduling/run
スケジュールの管理画面は、routesに記載がある通り、こちら
LINK: http://laravel-admin.test/admin/scheduling
コマンドを作って、スケジューリングしてみる
細かいことは、別途記事にまとめます。
artisanコマンドを作ってバッチテンプレ生成。
「HelloWorldBatch」という名称で作成。(コントローラ名になります)
php artisan make:command HelloWorldBatch
コマンドを実行すると、以下の場所にコントローラが作成されます。
コマンドパス: /app/Console/Commands
編集ファイル: app/Console/Commands/HelloWorldBatch.php
コマンド名: $signature = 'sample:hello'
コマンド説明: $description = 'sample command hello world ですよ.'
コマンド実行したら「Hello World!」と表示されるように handle() メソッドの最初に以下を追加
echo ('Hello World!’);
コマンドソースをペタっ
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class HelloWorldBatch extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'sample:hello';
/**
* The console command description.
*
* @var string
*/
protected $description = 'sample command hello world ですよ.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
echo ('Hello World!');
return Command::SUCCESS;
}
}
コマンドリストを確認してみましょう。
php artisan list
実行すると、sample:helloと指定したので、sampleグルーピングされています。
コマンドを作っていく場合は、システム単位や機能単位でグルーピングするようにするとわかりやすいと思います。
せっかくなんでHelper画面でも確認してみます。
LINK: http://laravel-admin.test/admin/helpers/terminal/artisan
コマンドを実行してみます。
ターミナルでも、helper画面でもどちらでも実行できます。
php artisan sample:hello
実行できることを確認できました。
本題はここから、スケジューリングしていきます。
タスクスケジューラ設定
laravelのタスクスケジューラは、基本的にcronからlaravelのコマンドスケジューラを毎秒呼び出す形に設定しておき、「Kernel.php」にてスケジューリングを行なっていきます。
まずは、cronに以下を設定していきます。
sudo crontab -e
初回のみ以下のような選択肢が出てきて、どのエディターを使うか聞いてきます。
慣れているエディタを選んでください。
私は、vimの方が良かったので、2 と入力し、vimを選択しました。
* * * * * cd [プロジェクトのパス] && php artisan schedule:run >> /dev/null 2>&1
私の環境では、以下のようになります。
* * * * * cd /home/vagrant/code/laravel-admin && php artisan schedule:run >> /dev/null 2>&1
毎秒プロジェクトパスに移動して、schedule:runを実行し標準出力はしない。
という設定です。
細かいところは、「cron コマンド」で検索っ!
設定されたか確認するコマンド。
sudo crontab -l
念の為、cronサービスを再起動します。
sudo service cron restart
これで前処理完了です。
あとは、タスクスケジューリングをしていきます。
エディタで、「app/Console/Kernel.php」を開き、スケジュール設定を追加します。
スケジュールの記載については、以下のURLを参考にしてください。
LINK: https://readouble.com/laravel/8.x/ja/scheduling.html
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
$schedule->command('sample:hello')->everyFiveMinutes();
}
反映されたか確認するコマンド
$ php artisan schedule:list
スケジュール画面で見てみます。
LINK: http://laravel-admin.test/admin/scheduling
[Run]ボタンを実行すると、即時実行されます。
バッチの作成も含めてしまったので少し長くなってしまいましたが、今回はこれで終了です。お疲れ様でした。
エアーマット 連結 可能 キャンプ エアマット エアベット アウトドア ソロキャンプ 防災 軽量 コンパクト テント 車中泊 らくらくフットポンプ式 7Gadget 送料無料 沖縄・離島を除く 価格:3,580円 |