찾다

라라벨 큐란?

Feb 14, 2022 pm 03:25 PM
laravel대기줄

laravel에서 큐는 작업이 제한된 선형 테이블입니다. 테이블의 프런트 엔드(큐 헤드)에서만 삭제 작업과 큐를 통한 테이블의 백 엔드(큐 테일)에서의 삽입 작업만 허용됩니다. , 개발 사용자는 시간이 많이 걸리는 작업의 처리를 나중으로 연기할 수 있으며, 이는 웹 요청의 응답 속도를 크게 향상시킬 수 있습니다.

라라벨 큐란?

이 튜토리얼의 운영 환경: Windows 7 시스템, Laravel 6 버전, Dell G3 컴퓨터.

laravel에서 대기열 사용

1. 대기열이란 무엇입니까

대기열은 작업이 제한된 선형 테이블입니다. 특별한 점은 프런트 엔드에서만 삭제 작업을 허용한다는 것입니다. 테이블 및 삽입 작업은 테이블의 백엔드에서 수행됩니다. 삽입 작업을 수행하는 끝을 큐의 꼬리라고 하고 삭제 작업을 수행하는 끝을 큐의 헤드라고 합니다.

큐를 사용하면 시간이 많이 걸리는 작업(예: 이메일 보내기)의 처리를 나중에 연기할 수 있습니다. 시간이 많이 걸리는 이러한 작업을 지연하면 웹 요청 응답 속도가 크게 향상될 수 있습니다.

2. 장점

  • 메시지 대기열은 시스템을 분리하고 응답 속도를 향상시키며 시스템 기능은 내부로 집계되고 외부로 공개됩니다.

  • 비동기: 메시지 대기열은 기능적 결합을 줄이고 개발 효율성을 향상시키기 위해 기능을 제거합니다.

  • 피크 감소: 메시지 큐는 다운스트림 소비자의 안정적인 작동을 보장하기 위해 피크를 줄이고 전류를 제한할 수 있습니다.

queue 구성 파일 config/queue.php에 저장됩니다. 이 파일에서는 데이터베이스, Beanstalkd, Amazon SQS, Redis 및 동기화 드라이버(동기화 - 로컬 사용)를 포함하는 프레임워크에 포함된 각 대기열 드라이버에 대한 연결 구성을 찾을 수 있습니다. 여기서는 Redis가 드라이버로 사용되며 Redis 및 관련 확장 프로그램을 설치해야 합니다.

4. 작업


대기열에 무언가를 넣어야 하는데 이를 작업이라고 부를 수 있습니다. Laravel 프레임워크에서 작업을 생성하면 다음 명령이 제공됩니다:

php artisan make:job TestJob
TestJob.php

namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;use Illuminate\Support\Facades\DB;use Symfony\Polyfill\Intl\Idn\Info;class TestJob implements ShouldQueue{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {//        \Log::info('hhh');
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小白',
                'email'=>'123@qq.com'
            ]);
    }}

5. Distribution

작업 클래스가 작성되면 작업 자체의 디스패치 메서드를 사용할 수 있습니다. 그것을 파견하기 위해. 디스패치 메서드에 전달된 매개변수는 작업 생성자에 전달됩니다. :Onqueue: 대기열 지정; Dlay: 지연 대기열; DispatchNow: 동기식 스케줄링; Consumption

6. 새로 푸시된 작업을 대기열에 처리합니다. Artisan 명령어 queue:work로 큐 프로세서를 시작하세요. queue:work 명령이 시작되면 수동으로 중지하거나 터미널을 닫을 때까지 계속 실행됩니다.



php artisan queue:work
php artisan queue:work --once 매개변수 추가, 소비 대기열을 지정합니다

#在路由中简单调用
Route::get('queue',function(){
        \App\Jobs\TestJob::dispatch();
//        \App\Jobs\TestJob::dispatch()->onQueue('qq');
    });

두 개의 새로운 데이터가 데이터베이스에 추가되고 redis의 데이터가 소비된 것을 볼 수 있습니다

라라벨 큐란?

라우팅을 다시 실행합니다


7. 이벤트 큐

라라벨 큐란?큐는 일반적으로 지연된 작업을 처리하는 데 사용되며 이벤트는 비즈니스 로직에 의해 처리됩니다. Laravel의 이벤트 트리거는 비동기식 비즈니스 처리를 위해 대기열에 배포되므로 사용자에게 프롬프트 메시지를 보내기 전에 실시간으로 실행 결과를 기다리지 않고 빠르게 응답할 수 있습니다.

이벤트의 비즈니스를 대기열에 저장해야 하는 경우 대기열을 재배포할 필요가 없습니다. 해당 리스너에서 IlluminateContractsQueueShouldQueue 인터페이스를 직접 구현할 수 있습니다.

라라벨 큐란?이벤트 및 리스너 생성

#消费qq队列
php artisan queue:work --queue=qq

appprovidersEventServiceProvider.php

라라벨 큐란?

TestListener.php

php artisan make:event TestEvent
php artisan make:listener TestListener
경로 수정
namespace App\Listeners;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\DB;

class TestListener implements ShouldQueue
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle()
    {
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小黑',
                'email'=>'234@qq.com'
            ]);
    }
}
경로 실행


소비 대기열

Route::get('queue',function(){
        //\App\Jobs\TestJob::dispatch();
        //指定队列名称
        //\App\Jobs\TestJob::dispatch()->onQueue('qq');
        return event(new \App\Events\TestEvent());
    });

【관련 추천: laravel 비디오 튜토리얼

위 내용은 라라벨 큐란?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
JavaScript 프레임 워크 (React, Vue, Angular)와 Laravel 백엔드 통합JavaScript 프레임 워크 (React, Vue, Angular)와 Laravel 백엔드 통합May 03, 2025 am 12:20 AM

React, vue, andangularcanbeintegratedwithlaravelbyfollowspecificsetupsteps.1) forreact : installEactusingLaravelui, setupcomponentsinApp.js.2) Forvue : Uselaravel'sbuilt-Invuesupport, configureinApt.3)

작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적May 02, 2025 am 12:25 AM

taskManagementToolsEnsentialForeMoteProjectManagementByPirizingTaskSandTrackingProgress.1) USETOOLSLIKETRELLOANATOSETPRIORITIESWITHLABELSORTAGS.2) EmployToolslikeJiraanddonday.comforvisualTrackingWithGantTchartSandprogressbars.3) k

최신 Laravel 버전은 성능을 어떻게 향상 시키는가?최신 Laravel 버전은 성능을 어떻게 향상 시키는가?May 02, 2025 am 12:24 AM

Laravel10EnhancesPerformancetHroughseveralKeyFeatures.1) ItinTroduceSqueryBuilderCachingTucedAtabaseload.2) ITOPTIMIZESELOQUENTMODELLOADINGWITHLAZYLOWNEDPROXIES.3) ITIMPROVESTINGWITHANEWCACHINGSYSTEM.4) ITENHANCES WITHENTEMPHANCES BLOWTETETEMPLOTETEMPHENCESTEMPHENTSE

풀 스택 Laravel 애플리케이션을위한 배포 전략풀 스택 Laravel 애플리케이션을위한 배포 전략May 02, 2025 am 12:22 AM

최고의 풀 스택 Laravel 애플리케이션 배포 전략에는 다음이 포함됩니다. 1. 제로 다운 타임 배포, 2. 청록색 배포, 3. 연속 배포 및 4. Canary Release. 1. 제로 다운 타임 배포는 Envoy 또는 배치자를 사용하여 배포 프로세스를 자동화하여 업데이트 될 때 애플리케이션을 사용할 수 있도록합니다. 2. Blue 및 Green Deployment는 두 가지 환경을 유지하여 다운 타임 배포를 가능하게하며 빠른 롤백을 허용합니다. 3. 지속적인 배포는 githubactions 또는 gitlabci/cd를 통해 전체 배포 프로세스를 자동화합니다. 4. Canary는 NGINX 구성을 통해 출시되어 성능 최적화와 빠른 롤백을 보장하기 위해 사용자에게 새 버전을 점차 홍보합니다.

풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술May 02, 2025 am 12:22 AM

ToscalealaravelApplicationeficationfictically, Focusondatabasesharding, 캐싱, 하중 발행 및 Microservices.1) 구현 대자 방당 분배 된 분산 된 타타 이탈 라제스 퍼포먼스

침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복May 02, 2025 am 12:20 AM

TovercomeCommunicationBarriersindistributedTeams, 사용 : 1) videocallsforface-to-faceintercation, 2) setClearResponsetImeexpectations, 3) ChooseAppropriateCommunicationTools, 4) CreateAteAmcommunicationGuide, 및 5) spuctionPersonalboundIVestOverventBurnout

풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용May 01, 2025 am 12:24 AM

laravelbladeenhancesfrontendtemplatinginfull-stackprojectsbyofferingcleansyntaxandpowerfulfeatures.1) itallowsforeasyvaribledisplayandcontrolstructures.2) bladesupportscreatingAndAndErscreatingCreatingScreatingAndErsingComponents, aidingininagingComplexUis.3) iteffort handleslyous

Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼May 01, 2025 am 12:23 AM

laravelisidealforfull-stackapplicationsduetoitselegantsyntax, 포괄적 인 Cosystem 및 powerfulfeatures.1) audeeloquentormforintucive backenddatamanipulation, butavoidn 1queryisss.2) Employblatingforcleanfrontendviews, beencautiousofoversing@i

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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기