대량 이메일, 메시지 알림, SMS, 플래시 세일 등 일괄 처리 작업 시나리오는 우리 개발에서 자주 사용됩니다. 이러한 시간이 많이 걸리는 작업을 처리 대기열에 넣어서 시간을 크게 단축해야 합니다. 웹 요청 및 해당 시간.
다음은 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', ], ];
Configuration 파일 동기화 드라이버 sync가 기본적으로 사용됩니다. 데이터베이스, Beanstalkd, Amazon SQS 및 Redis를 포함하여 각 대기열 드라이버의 구성을 이 파일에서 찾을 수 있습니다. 또한 대기열을 중단하는 작업을 위한 널 대기열 드라이버도 포함되어 있습니다. 실패한 구성 항목은 실패한 대기열 작업이 저장되는 데이터베이스 및 데이터 테이블을 구성하는 데 사용됩니다.
다음으로 대기열 작업 클래스를 만들어야 합니다.
큐 태스크 클래스를 생성하면 app/Jobs 디렉터리에 SendEmail.php 파일이 생성됩니다.
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 기본적으로 대기열 요청은 한 번만 실행되며, 요청이 실행되면 종료됩니다. # 🎜🎜#
● queue:listen은 실행 중인 동안에는 수동으로 종료하지 않는 한 항상 요청을 수락할 수 있습니다. queue:work --daemon은 Listen과 동일하지만 다릅니다. 작업에서는 프레임워크를 다시 로드할 필요가 없으며 작업을 직접 실행하므로 일반적으로 대기열 모니터링을 처리하는 데 사용하는 것이 좋습니다. ● 참고: queue:work --daemon을 사용할 경우 코드 업데이트 시 중지했다가 다시 시작해야 수정된 코드가 적용됩니다. 더 많은 Laravel 관련 기술 기사를 보려면Laravel 프레임워크 시작 튜토리얼
컬럼을 방문하여 알아보세요!위 내용은 Laravel 대기열 메일 보내기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!