このチュートリアルでは、Laravel で cron ジョブを実行する方法を説明しますが、何よりも生徒にとって物事をシンプルで簡単なものにします。 Laravel アプリを構築しながら、これらの自動化されたタスクを自分のコンピューター上でセットアップして実行する方法を検討していきます。
まず、cron ジョブとは何ですか?あなたの Web サイトのパーソナル アシスタントと考えてください。決して眠らず、常に時間通りに現れるアシスタントです。これは、特定の時間に自動的に実行されるようにスケジュールするタスクです。 Laravel では、これらを使用して反復的なジョブを処理し、アプリケーションをスムーズに実行し続けます。
さて、「これらの cron ジョブを自分のコンピュータで実行するにはどうすればよいですか?」と疑問に思われるかもしれません。これを段階的に説明していきます。最後には、プロのようにタスクのスケジュールを設定できるようになります。
Laravel のスケジューリング システムの中心である app/Console/Kernel.php ファイルから始めましょう。ここで魔法が起こります。このファイルを開くと、schedule というメソッドが表示されます。これはタスクを設定するための遊び場です。次のようになります:
protected function schedule(Schedule $schedule) { $schedule->command('emails:send')->daily(); }
この例では、Laravel に「毎日メールを送信してほしいのですが」と伝えます。それはとても簡単です! Laravel では、タスクをいつ実行するかについてのオプションがたくさんあります。必要に応じて、1 時間ごと、1 週間に 1 回、さらには 5 分ごとに実行することもできます。
さて、ここからが少し難しくなります。実際の Web サーバーには、これらのスケジュールされたタスクを自動的に実行するシステムがあります。ただし、自分のコンピュータでは、少し創造性を発揮する必要があります。
Laravel は、スケジュールされたタスクを手動で実行するための便利なコマンドを提供します。端末に次のように入力できます:
php artisan schedule:run
このコマンドは、「今期限になっているタスクをすべて実行してください」と言っているようなものです。でも正直に言うと、そこに座ってこのコマンドを何度も入力するのは嫌ですよね?
それでは、巧妙なトリックを紹介します。このコマンドを毎分実行する簡単なスクリプトを作成できます。コンピューター上に小さなロボットアシスタントがいるようなものです。そのスクリプトは次のようになります:
#!/bin/bash while true do php /path/to/your/project/artisan schedule:run >> /dev/null 2>&1 sleep 60 done
怖がらないでください!これは、コンピュータに対して、schedule:run コマンドを 60 秒ごとに実行するように指示しているだけです。これを .sh ファイルとして保存し、プロジェクトの作業中にバックグラウンドで実行します。
スケジュールされたタスクをテストしているので、ログを追加することをお勧めします。こうすることで、舞台裏で何が起こっているかを確認できます。それは自分自身のためにパンくずリストの痕跡を残すようなものです。
このセットアップは、自分のコンピューターでアプリを構築してテストする場合に最適であることを覚えておいてください。実際に Web サイトを立ち上げる準備ができたら、Web サーバーで少し異なる設定をする必要があります。
Laravel の作成者、Taylor Otwell はかつてこう述べました。「タスクのスケジューリングは現代の Web 開発の重要な側面であり、開発者は反復的なタスクを自動化し、アプリケーションの全体的な効率を向上させることができます。」彼は絶対に正しいです!スケジュールされたタスクをマスターすることで、より強力で効率的な Web アプリケーションの構築に向けて大きな一歩を踏み出すことができます。
これで完成です!これで、Laravel アプリを構築しながら、自分のコンピューターで cron ジョブをセットアップして実行する準備が整いました。最初は少し複雑に思えるかもしれませんが、練習すると自然にできるようになるでしょう。実験を続ければ、いつの間にか熟練のプロのようにタスクのスケジュールを立てることができるようになります!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3