Laravelアプリケーションでタスクスケジュールを使用する方法

PHPz
リリース: 2023-04-06 19:03:06
オリジナル
1541 人が閲覧しました

Laravel は、タスクのスケジュール設定など、利用可能なコンポーネントやツールを多数提供する人気の PHP フレームワークです。この記事では、Laravel アプリケーションでタスクのスケジュールを使用する方法を説明します。

タスクのスケジュール設定とは何ですか?
タスクスケジューリングとは、指定されたいくつかのタスクを計画に従って実行する技術を指します。たとえば、データベースを 1 時間ごとにバックアップしたり、レポートを毎日送信したりします。 Laravel では、タスクのスケジュール設定は Cron タブに似ていますが、実装と管理がより簡単です。

Laravel のタスク スケジューラは、CRON ソケットや Powershell などの Artisan コマンド ライン ツールを使用してスケジュールを管理します。

Laravel でタスクのスケジューリングを実装する方法を見てみましょう。

最初のステップ - タスクの作成
タスクの作成は、タスク スケジュールを実装するための最初のステップです。 Laravel でのタスクのスケジュール設定はクラスの形式で表示されます。タスクをクラスに変換すると、実行するロジックを定義することで管理とテストが向上します。サンプル タスク TutorialTask​​:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class TutorialTask implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // Your logic to execute every minute.
        \Log::info(&#39;Task executed at &#39;.now());
    }
}
ログイン後にコピー

を作成してみましょう。このタスクのロジックは非常に単純で、1 分ごとに 1 つのメッセージをログに記録します。これでタスクを作成しましたが、自動的には実行されません。そのためのスケジュールを立てる必要があります。

ステップ 2 - コンソールでスケジュールを設定する
Laravel には、スケジュールにタスクを追加するためのメソッドが多数用意されています。ここでは、schedule メソッドを使用して、コンソールでスケジュールを設定します。

$schedule->job(new TutorialTask)->everyMinute();
ログイン後にコピー

everyMinute メソッドは、このタスクが 1 分ごとに実行されることを示します。時間ごと (hourly)、日ごと (daily)、月ごと (monthly)、または週ごと (weekly) など、他の事前定義された方法を使用することもできます。 )。

または、独自の頻度ルールを定義することもできます。

$schedule->job(new TutorialTask)->everyFiveMinutes();
ログイン後にコピー

このルールは、タスクが 5 分ごとに実行されるように指定します。

ステップ 3 - タスク スケジューラを開始する
タスクのスケジュールを設定したので、タスク スケジューラを開始する必要があります。サーバー上でスケジューラーを実行することも、Cron タブを設定することで実行される Laravel 独自のスケジューラーを使用することもできます。

コンソールで次のコマンドを実行します:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
ログイン後にコピー

このコマンドは、Laravel のスケジューラを毎分実行します。 /path-to-your-project を Laravel アプリケーションへのパスに置き換える必要があります。 >> /dev/null は、すべての出力が /dev/null に転送されることを示します。

最終ステップ - キューを開始します (必要な場合)
アプリケーションでキューを使用する場合は、キュー スケジューラを有効にする必要があります。 Laravel は、Redis や Beanstalkd などのバックエンド ドライバーを使用してキュー タスクを処理します。次の手順に従ってキュー スケジューラを有効にする必要があります:

.env ファイルで QUEUE_DRIVER を定義します:

config で

QUEUE_DRIVER=redis
ログイン後にコピー
/queue .php でキュー接続を設定します:
'default' => env('QUEUE_DRIVER', 'redis'),

'connections' => [
    .....
     'redis' => [
            'driver' => 'redis',
            'connection' => 'your-default-redis-connection',
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => 90,
        ],
  .....
]
ログイン後にコピー

.env ファイルを変更してキュー接続を指定します:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_QUEUE=default
ログイン後にコピー

次に、キュー スケジューラを開始します。

php artisan queue:work redis --daemon
ログイン後にコピー

このコマンドはキュー スケジューラを起動し、タスクの実行を開始します。

結論:
Laravel のタスク スケジュール機能を使用すると、オンデマンドでコマンドを実行したり、プログラムを実行したり、電子メールを送信したりできます。スケジュールされたタスクを作成し、タスク リストに追加することで、タスクを簡単に管理および実行できます。このプロセス中、タスクがスケジュールされた時間に実行されるか、優先キューで実行されるように、スケジューラまたはキュー スケジューラを忘れずにオンにしてください。 Laravel タスクスケジューラを使用してアプリケーションのパフォーマンスと応答性を向上させてください。

以上がLaravelアプリケーションでタスクスケジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート