PMとして様々な案件を進めていくにあたって、実装されたコードが正しく動いているかを確認することはとても重要なことです。
しかし、全体の機能ではなく一部分だけを確認したいこともままあります。
そんなときに、artisan tinker
を使うと、確認したいクラスの挙動のみ取り出してチェックすることができます。
また、処理に時間がかかる場合は、nohup
コマンドによってバックグラウンドで動かすことも可能となります。
今回は、いつも私が使っているこの二つのコマンドについて簡単ながらまとめてみました。
1. artisan tinker の基本
artisan tinker
は、「アルチザン ティンカー」と読むそうです。
簡単にいうと「お試しツール」みたいなものになります。
たとえば、料理を作るときにちょっと味見することってありますよね?「この量でちょうどいいかな?」みたいに。その感じで、「このコードでちゃんと動くかな?」と確認できるのがartisan tinker
です。
2. artisan tinker コマンド
$ php artisan tinker
Psy Shell v0.11.4 (PHP 8.1.3 — cli) by Justin Hileman
>>>
>>>
になったら準備完了です。
例えば、ユーザ情報を取得するクラスがあったとしたら、以下のようにコマンドを打つことでユーザ情報が取得できます。
>>> app(App\{中略}\GetUserInfo::class)->execute('{取得したいユーザID}');
実装内容によって使えるコマンドは変わりますが、サクッと確認したい時にはとても便利です。
※tinkerで使えるコマンドを確認したい場合は
$ php artisan list
で、使えるコマンド一覧が表示されます。
3. 長時間実行スクリプトの課題
artisan tinker
は便利ですが、長時間実行されるスクリプトでは次のような問題があります。
- セッションが切れるとスクリプトが中断される
- コマンドの実行中にターミナルを閉じられない
- 実行ログが保存されない
これを解決するために、nohup
コマンドを利用します。
4. nohup コマンドの活用
nohup
コマンドは、シェルセッション終了後もプロセスを継続して実行できるLinuxコマンドです。Laravelのスクリプト実行にも有効です。
nohup
コマンドは以下の形式で使用します。
$ nohup <コマンド> &
nohup
を利用することで、ターミナルを閉じてもスクリプトがバックグラウンドで実行され続けます。
こうすることで、ターミナルを閉じても、処理が終わるまで実行し続けてくれます。
ちなみに、nohup
コマンドを使った時は、通常ホームディレクトリにnohup.out
というログファイルが出力されます。
これはtail
コマンドでリアルタイムに確認することができます。
$ tail -f nohup.out
まとめ
以上でartisan tinker
とnohup
コマンドについての紹介でした。
処理の確認だけでなく、ピンポイントで取得したい情報がある場合にも使えるので、活用できる方は参考にしてください。