検索
ホームページPHPフレームワークLaravelLaravel5.5のイベント監視、タスクスケジューリング、キューの分析

次のチュートリアルコラムでは、Laravel5.5のイベント監視、タスクスケジューリング、キューについて紹介しますので、困っている方の参考になれば幸いです。 Laravel5.5 イベント監視、タスクスケジューリング、キュー

1.イベント監視

プロセス:

1.1 イベントを作成する

php artisan make:event UserLogin
Laravel5.5のイベント監視、タスクスケジューリング、キューの分析LoginController.php

    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        event(new UserLogin($user));
    }

1.2 リスナーを作成する1.2.1 方法 1: 手動create

php artisan make:listener EmailAdminUserLogin --event=UserLogin

1.2.2 方法 2:

次の方法をお勧めします:

イベントとリスナーを自動的に生成する

//应用程序的事件监听器映射

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'App\Events\UserLogin' => [
            'App\Listeners\UserLogin\EmailAdminUserLogin',
            'App\Listeners\UserLogin\TraceUser',
            'App\Listeners\UserLogin\AddUserLoginCounter',
        ],
        'App\Events\UserLogout' => [
            'App\Listeners\UserLogout\EmailAdminUserLogout',
            'App\Listeners\UserLogout\TraceUser',
        ],
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        Event::listen('event.*', function ($eventName, array $data) {
            //
        });
    }
}

イベントとリスナーを生成する:

phpArtisanevent:generate

2. Laravelのタスクスケジューリング(計画タスク)関数Task Scheduling2.1 callメソッド

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function (){
            \Log::info('我是call方法实现的定时任务');
        })->everyMinute();
    }

Execution:

php 職人スケジュール:run

2.2 crontab メソッド

2.2 コマンド メソッド

Laravel5.5のイベント監視、タスクスケジューリング、キューの分析

コマンドの生成:

php 職人 make:command SayHello

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;

class SayHello extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = &#39;message:hi&#39;;

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = &#39;Command description&#39;;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //书写处理逻辑
        \Log::info(&#39;早上好,用户&#39;);
    }
}
Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('message:hi')
             ->everyMinute();
}

実行:

php 職人のスケジュール:run

3. タスクをキューに入れる3.1 必要なドライバーの設定

QUEUE_DRIVER=database

例: データベース ドライバー

php artisan queue:table

php artisan migrate

3.2 タスクの作成

タスク クラスの生成:

php artisan make:job SendReminderEmail
class SendReminderEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $user;

    /**
     * Create a new job instance.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        \Log::info('send reminder email to user' . $this->user->email);
    }
}

3.3 タスクの配布 タスク クラスを作成した後、

dispatch

補助関数を通じてそれを配布できます。

dispatch

に渡す必要がある唯一のパラメーターは、このタスク クラスのインスタンスです: モデル ファクトリを使用して 30 人のユーザーを生成します:
#

    public function store(Request $request)
    {
        $users = User::where('id','>',24)->get();

        foreach ($users as $user){
            $this->dispatch(new SendReminderEmail($user));
        }

        return 'Done';
    }
Route::get('/job', 'UserController@store');

データベース テーブル

jobsLaravel5.5のイベント監視、タスクスケジューリング、キューの分析5 つのキュー タスクを生成:

#3.4 キュー プロセッサを実行

php artisan queue:work

Laravel5.5のイベント監視、タスクスケジューリング、キューの分析ヒント:

queue:work

コマンドが開始されると、手動で停止するかコンソールを閉じるまで実行されることに注意してください

単一タスクの処理: --once

オプションを使用して、キュー内の単一タスクのみが処理されるように指定できます

php artisan queue:work --once
拡張子:

#BeanstalkdLaravel5.5のイベント監視、タスクスケジューリング、キューの分析 を使用してキューを管理し、

Supervisor

を使用してキュー内のタスクを監視し、キューにタスクがある場合は自動的に実行を支援します。これにより、キューが正しく実行されることを確認するために php 職人 コマンドを手動で入力する必要がなくなりました。《関連する推奨事項: 最新の 5 つの Laravel ビデオ チュートリアル

以上がLaravel5.5のイベント監視、タスクスケジューリング、キューの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
共同ドキュメント編集:分散チームのワークフローの合理化共同ドキュメント編集:分散チームのワークフローの合理化Apr 27, 2025 am 12:21 AM

コラボレーティブドキュメント編集は、分散チームがワークフローを最適化するための効果的なツールです。リアルタイムのコラボレーションとフィードバックループを通じてコミュニケーションとプロジェクトの進捗を改善し、一般的なツールにはGoogleドキュメント、Microsoftチーム、概念が含まれます。使用時のバージョン制御や学習曲線などの課題に注意してください。

前のLaravelバージョンはどのくらいサポートされますか?前のLaravelバージョンはどのくらいサポートされますか?Apr 27, 2025 am 12:17 AM

PreviousVersionOflAravelisSupportedededSedesixmonthsandSecurityFixesseSeCurityfixesseSearaheearAfterAnewMajorversion'sRelease.Surstanding understanding understanding untinding for PlanningUpgrades、保証されている可能性、およびレバレングリエンジュレーリュアリュアリュアリュアリュアシュリュアケーション

フロントエンド開発とバックエンド開発の両方のLaravelの機能を活用しますフロントエンド開発とバックエンド開発の両方のLaravelの機能を活用しますApr 27, 2025 am 12:16 AM

laravelcanbeefeectivelyは、development.1)backend:utilizelaravel'seloquentormforsimprifiedDatabaseInteractions.2)frontend:cleanhtmlandEgratevue.jsfordynamicspasのレバレッジブラデテンプレーズ、エンサイリングレスレスレスフロレンテンドバッキンティントのためにレバレッジブラデテットを使用します

Laravelは、フルスタック開発(フロントエンドバックエンド)に使用できますか?Laravelは、フルスタック開発(フロントエンドバックエンド)に使用できますか?Apr 27, 2025 am 12:10 AM

laravelcanbeusedfurfullstackdevelopment.1)backendmasterywithlaravel'sexpressivesyntaxandfeatureslikeLoquentormatabasabasabasemanagement.2)frontendintegrationsingingbladeydynamtmltemplates.3)拡張フロントエンドウィットラーラーアセットコンプレイテーション

最新のLaravelバージョンへのアップグレードに役立つツールは何ですか?最新のLaravelバージョンへのアップグレードに役立つツールは何ですか?Apr 27, 2025 am 12:02 AM

回答:Laravelのアップグレードに最適なツールには、Laravelのアップグレードガイド、Laravelshift、Rector、Composer、Laravelpintが含まれます。 1.アップグレードロードマップとして、Laravelのアップグレードガイドを使用してください。 2. LaravelShiftを使用して、ほとんどのアップグレード作業を自動化しますが、手動のレビューが必要です。 3. Rectorを介してコードを自動的にリファクタリングし、ルールを理解し、カスタマイズする必要があります。 4. Composerを使用して依存関係を管理し、依存関係の可能性のある競合に注意を払います。 5.コードスタイルの一貫性を維持するためにlaravelpintを実行しますが、機能的な問題は解決しません。

ズームコールを超えて:分散チームを接続するための創造的な戦略ズームコールを超えて:分散チームを接続するための創造的な戦略Apr 26, 2025 am 12:24 AM

ToenhanceEngagementAndCohesionAmongDistributedTeamSbeyOndzoom、実装してください

最新のLaravelバージョンの壊れた変更は何ですか?最新のLaravelバージョンの壊れた変更は何ですか?Apr 26, 2025 am 12:23 AM

laravel10introducesseveralbreakingchanges:1)itrequirephp8.1orhigher、2)therouteSerseprovidernowuseSabootdododdoddoddoddoddoddoddoddoddoddoddoddod forloadingroutes、3)the withtimestamps()methodoneLoquentrelationshipsissisdedisded and4)andosnowprefrefreferure()

生産性パラドックス:リモート設定での焦点と動機を維持する生産性パラドックス:リモート設定での焦点と動機を維持するApr 26, 2025 am 12:17 AM

WOCUSANDMOTIVERIANCIANGINTIANIVERMOTEWORK、CREATERUCTUREDENVIRONMENT、MANAGEDIGITALDISTRACTIONS、FOSTERMOTIVERIVESTROUGHSOCIAL-INTERACTIONSIONDANDGOALSETTINTING、MANTEMESTECHNOLOGY.1)SetUpAdedicatedWorkStickEndStickToTtoTtoTtoTtoTototine。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール