バッチ処理タスク シナリオは、大量の電子メール、メッセージ通知、SMS、フラッシュ セールなどの開発でよく使用されます。この時間のかかる操作を処理のためにキューに入れる必要があるため、Web リクエストが大幅に短縮されます。そして応答時間。
次に、Laravel でのキューの使用について説明します。
設定ファイル config/queue.php
<?php return [ 'default' => env('QUEUE_DRIVER', 'sync'), 'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, ], 'beanstalkd' => [ 'driver' => 'beanstalkd', 'host' => 'localhost', 'queue' => 'default', 'retry_after' => 90, ], 'sqs' => [ 'driver' => 'sqs', 'key' => 'your-public-key', 'secret' => 'your-secret-key', 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', 'queue' => 'your-queue-name', 'region' => 'us-east-1', ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, ], ], 'failed' => [ 'database' => env('DB_CONNECTION', 'mysql'), 'table' => 'failed_jobs', ], ];
設定ファイルは、同期ドライバー sync by を使用します。データベース、Beanstalkd、Amazon SQS、Redis など、各キュードライバーの設定はこのファイルにあります。また、キューを中止するタスク用の null キュー ドライバーも含まれています。失敗した構成アイテムは、失敗したキュー タスクが保存されるデータベースとデータ テーブルを構成するために使用されます。
次に、キュー タスク クラスを作成する必要があります。
キュー タスク クラスを作成すると、SendEmail.php ファイルが app/Jobs ディレクトリに生成されます。
php artisan make:job SendEmail
<?php namespace App\Jobs; use App\User; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Support\Facades\Mail; class SendEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $user; /** * Create a new job instance. * * @return void */ public function __construct(User $user) { $this->user = $user; } /** * 执行队列的方法 比如发送邮件 * * @return void */ public function handle() { $user = $this->user; Mail::raw('这里填写邮件的内容',function ($message){ // 发件人(你自己的邮箱和名称) $message->from('your_email@163.com', 'yourname'); // 收件人的邮箱地址 $message->to($this->user); // 邮件主题 $message->subject('队列发送邮件'); }); } }
タスク クラスが作成されたら、コントローラーに移動してデータを追加しますキューに
メッセージを送信するコントローラーを作成し、ディスパッチ メソッドを使用してタスクを手動で配布します。メソッド
<?php namespace App\Http\Controllers; use App\Jobs\SendEmail; use App\User; class MessageController extends Controller { public function index() { $user = User::find(1); $this->dispatch(new SendEmail($user)); } }
にタスク クラスのインスタンスを渡します。その後、ブラウザにアクセスし、プロジェクトを実行します。そしてタスクをキューにプッシュします。次に、Artisan コマンドを使用してキュー内のタスクを実行します。
php Artisan queue:
# queue:work は、デフォルトでキュー リクエストを 1 回だけ実行し、リクエストが完了すると終了します。 ;
● queue:listen はキューのリクエストをリッスンします。実行中であれば、手動で終了しない限り、常にリクエストを受け入れることができます。
# queue:work --daemon は listen と同じです違いは、作業でフレームワークを再度ロードする必要がないことです。タスクを直接実行します。通常、キューの監視を処理するにはこれを使用することをお勧めします。
# 注: queue:work --daemon を使用する場合、コードを更新するときは、変更されたコードを適用できるように、停止してから再起動する必要があります。
Laravel 関連の技術記事の詳細については、Laravel Framework Getting Started Tutorial 列にアクセスして学習してください。
以上がLaravelキューのメール送信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。