이 기사는 사용자 경험과 웹 사이트 성능을 향상시키기 위해 계산 집약적 작업을 연기하는 강력한 도구 인 Laravel의 대기열 API를 탐색합니다. 우리는 주요 개념을 다루고 실용적인 예로 그것들을 설명합니다.
웹 사이트 속도는 SEO 및 사용자 만족도에 큰 영향을 미칩니다. 느린 페이지로드 시간은 종종 자원이 많은 코드 블록에서 비롯됩니다. 솔루션? 전반적인 속도를 향상시키기 위해 비정규 작업을 연기합니다. Laravel의 대기열 API는 이것을 달성 할 수있는 간소화 된 방법을 제공합니다.
Laravel의 대기열 API는 대기열에 추가 된 작업을 관리합니다. 이 대기열은 연결과 관련이 있으며, 이는 특정 큐 드라이버를 사용합니다. 구성 요소를 분해합시다 :
큐 드라이버
데이터베이스 연결과 유사하게 큐 API는 데이터베이스, Beanstalkd, SQS 및 Redis를 포함한 다양한 드라이버를 지원합니다. 드라이버는 큐 정보가 저장된 위치를 결정합니다 (예 : 데이터베이스 또는 Redis 서버). 두 명의 특수 드라이버 인 는 테스트에 유용합니다. 작업 실행을 건너 뜁니다.
연결
큐 구성에는 기본 연결을 지정해야합니다. 이 연결은 다음을 정의합니다
사용하는 대기열 드라이버
드라이버 별 구성 설정.
새 작업의 기본 대기열 이름
대기열
달리 지정되지 않는 한 작업이 기본 대기열에 추가됩니다.
이제, 실제 예제 : 이미지 썸네일 생성. 를 만들어 봅시다
첫 번째 대기열 작업 생성
여러 이미지 썸네일을 실시간으로 생성하면 특히 큰 이미지 또는 많은 썸네일 크기로 사용자 경험에 부정적인 영향을 줄 수 있습니다. 실시간 처리 대신이 작업을 대기열로 연기합니다. 이 접근법은 메인 페이지가 빠르게로드됨에 따라 우수한 사용자 경험을 제공하고 축소판 생성이 비동기식으로 발생합니다.
이미지 모델 생성
먼저, 업로드 된 이미지를 관리하기 위해
모델을 만들 것입니다.
이것은 null
모델과 마이그레이션 파일을 생성합니다. 원래 이미지 경로를 포함하려면 마이그레이션 (null
데이터베이스/마이그레이션/yyyy_mm_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_dd_ddd_dd_dd_dd_dd_dd_dd_dd_dd_dd_ddd_ddd_ddd_ddd_ddd_ddd_images.php)을 수정하십시오.
마이그레이션을 실행하십시오 :
라 라벨 작업 생성
우리는 썸네일 처리에 중재 이미지 라이브러리를 사용합니다. 작곡가를 통해 설치하십시오 :
장인 명령을 사용하여 작업을 만듭니다
의 내용을 다음과 같이 대체하십시오
메소드에는 축소판 생성 로직이 포함되어 있습니다
작업 테스트
간단한 이미지 업로드 양식을 작성하겠습니다. 컨트롤러를 만듭니다 ( app/http/controllers/imagecontroller.php ) : php artisan make:model Image --migration
로그인 후 복사
view ()를 생성하고 lours/web.php : 에 경로를 추가하십시오
메소드는 파일 업로드, 데이터베이스 항목을 처리하고 작업을 발송합니다.
업로드 후 데이터베이스 쿼리를 사용하여 테이블에 작업의 추가를 확인하십시오.
대기열 작업자
대기열 작업자는 대기열 작업을 처리합니다. 시작하십시오 :
이 명령은 일자리가 보류중인 작업을 처리합니다. 출력에는 작업 처리 상태가 표시됩니다. 지속적인 백그라운드 처리를 위해서는 감독자, 서커스 또는 이와 유사한 프로세스 관리자를 사용하십시오.
<?php
// database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php
// ...
$table->string('org_path');
// ...
?>
로그인 후 복사
결론
Laravel의 대기열 API는 리소스 집약적 작업을 효율적으로 처리하여 사용자 경험을 향상시킵니다. 이 기사는 기본적인 이해와 실질적인 구현 예를 제공했습니다. 추가 학습을 위해 Envato Market에서 자원을 탐색하십시오위 내용은 대기열을 사용하여 Laravel의 작업을 연기합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!