Laravel5.7에서 비동기 처리
8727 단어 PHPlaravel5.7Horizon
이후 라벨(5.7)으로 비동기 처리를 시도하고 호리존으로 가동을 시도한다.
(Laavel이 이미 활동하는 환경이 있다고 가정합니다.Laradoc 등으로 제작하십시오.)
카탈로그
Laavel(5.7)에서 비동기 처리
1. Laavel(5.7)에서 비동기 처리
라벨에는 빈스토크, 아마존 SQS, 레디스 등을 단서로 한 비동기적 처리를 간단하게 수행할 수 있는 큐어 서비스가 있다.
자세한 내용은 공식 문서를 보십시오.
1.1 비동기적으로 처리하기
다음 명령을 실행하면
app/Jobs
의 부하에서 클래스ProcessSample
가 생성됩니다.이 클래스에서 비동기 처리 (작업) 를 실행합니다.php artisan make:job ProcessSample
생성된 클래스 handle
방법은 실제 작업을 수행할 때 호출되는 함수입니다.나는 적당한 텍스트를 받아 보았고, 실행할 때 로그를 출력하는 작업을 만들어 보았다.
app/Jobs/ProcessSample.php
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class ProcessSample implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $text;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($text)
{
$this->text = $text;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
logger()->info("It's work! | ".$this->text);
}
}
1.2 디렉터에서 호출
dispatch
함수는 작업을 대기열에 추가합니다.파라미터는
ProcessSample
의 구조기에 맡긴다.routes/web.php
use App\Jobs\ProcessSample;
Route::get('/test/{text}', function ($text) {
ProcessSample::dispatch($text);
return 'Queued!';
});
1.3 동기화 시도
.env
파일을 설정한 QUEUE_CONNECTION
는 실제로 어떤 대기열을 사용합니까?아마존 SQS와 레디스 등을 지정할 수 있다.
여기서 작동 여부를 확인하고 싶어서 동시 실행
sync
으로 설정했습니다..env
QUEUE_CONNECTION=sync
방금 /test/{text}
라는 URL을 설정했으니 방문해 보세요/test/sampletext
.storage/logs/laravel-2018-12-11.log
[2018-12-11 **:**:**] local.INFO: It's work! | sampletext
이런 로그를 출력하면 성공입니다.🎉2. Redis 대기열을 사용하여 실행 시도
레코드를 준비하다
각자 Redis 호스트를 준비하십시오.
Laradoc의 경우 Redis가 포함되어 있으므로 아래에서 시작할 수 있습니다.docker-compose up -d redis
매크로 패키지 추가 및 구성
Laavel에서 Redis를 큐로 사용하려면 Predis가 필요하므로 프로젝트에 추가합니다.composer require predis/predis
Redis를 대기열로 설정합니다.
.envQUEUE_CONNECTION=redis
# 以下は環境に合わせて設定してください
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
지금까지 Redis 설정이었습니다!
시험해 보다
다음 단계에서는 대기열을 실제로 감시할 수 있습니다.php artisan queue:work
이 상태에서 액세스/test/sampletext2
.
storage/logs/laravel-2018-12-11.log[2018-12-11 **:**:**] local.INFO: It's work! | sampletext2
이런 로그를 출력하면 성공입니다.🎉
비동기 처리의 실현, 완벽✨
3. Laavel Horizon으로 이동
Horizon은 Laavel의 Redis 대기열을 모니터링하는 도구입니다.
비동기 처리를 하는 부분은 위 절차에 따라 문제가 없고, 호리존에는 대시보드가 있어 처리된 처리량과 실패 등을 확인할 수 있어 즐거워 사용해 봤다.
자세한 내용은 공식 문서를 보십시오.
매크로 패키지 추가
프로젝트에 Horizon을 추가합니다.composer require laravel/horizon
Horizon에는 pcntl이 필요합니다.그렇지 않으면 다음 오류가 발생합니다.$ composer require laravel/horizon
Using version ^2.0 for laravel/horizon
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/horizon v2.0.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- laravel/horizon 2.0.x-dev requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- Installation request for laravel/horizon ^2.0 -> satisfiable by laravel/horizon[2.0.x-dev, v2.0.0].
Installation failed, reverting ./composer.json to its original content.
Docker를 사용하는 사람은 Docker 파일에 다음 내용을 추가한 다음 구축을 시작할 수 있습니다.
어떻게든 pcntl를 설치해 주세요.
Dockerfile(略)
RUN docker-php-ext-install pcntl
docker-compose up -d --build
설정
Horizon을 설치합니다.php artisan horizon:install
실패한 대기열의 테이블을 만듭니다.php artisan queue:failed-table
php artisan migrate
Horizon의 준비는 여기까지!
시험해 보다
Horizon을 시작합니다.php artisan horizon
방문/horizon
하면 계기판이 나타날 것입니다.
이 상태에서 액세스/test/sampletext3
.
storage/logs/laravel-2018-12-11.log[2018-12-11 **:**:**] local.INFO: It's work! | sampletext3
로그 출력이 성공하면
수고하셨습니다.👏
그리고 좀 더 맞춤형으로 만들어서 exit(1)
이상하게 끝날 때까지 놀 수 있어요.
실패한 작업 일람표에서 실패한 작업을 다시 이동할 수도 있습니다.
4. 마지막
비동기 처리는 라벨이 우리를 매우 배려했기 때문에 우리는 간단하게 실현할 수 있다는 것을 알게 되었다.
이후 슈퍼바이저 등으로 어떻게든 잘 움직여야 한다.
그냥 움직여 보려고 Horizon에 대해서도 소개했어요.
Horizon에는 또 다른 인증, 대기 상태가 길었을 때의 알림 등 기능이 있으니 반드시 확인해 주십시오공식 문서.
Reference
이 문제에 관하여(Laravel5.7에서 비동기 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yk-m/items/d65dedfa291d9cbfed38
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
docker-compose up -d redis
composer require predis/predis
QUEUE_CONNECTION=redis
# 以下は環境に合わせて設定してください
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
php artisan queue:work
[2018-12-11 **:**:**] local.INFO: It's work! | sampletext2
Horizon은 Laavel의 Redis 대기열을 모니터링하는 도구입니다.
비동기 처리를 하는 부분은 위 절차에 따라 문제가 없고, 호리존에는 대시보드가 있어 처리된 처리량과 실패 등을 확인할 수 있어 즐거워 사용해 봤다.
자세한 내용은 공식 문서를 보십시오.
매크로 패키지 추가
프로젝트에 Horizon을 추가합니다.
composer require laravel/horizon
Horizon에는 pcntl이 필요합니다.그렇지 않으면 다음 오류가 발생합니다.$ composer require laravel/horizon
Using version ^2.0 for laravel/horizon
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/horizon v2.0.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- laravel/horizon 2.0.x-dev requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.
- Installation request for laravel/horizon ^2.0 -> satisfiable by laravel/horizon[2.0.x-dev, v2.0.0].
Installation failed, reverting ./composer.json to its original content.
Docker를 사용하는 사람은 Docker 파일에 다음 내용을 추가한 다음 구축을 시작할 수 있습니다.어떻게든 pcntl를 설치해 주세요.
Dockerfile
(略)
RUN docker-php-ext-install pcntl
docker-compose up -d --build
설정
Horizon을 설치합니다.
php artisan horizon:install
실패한 대기열의 테이블을 만듭니다.php artisan queue:failed-table
php artisan migrate
Horizon의 준비는 여기까지!시험해 보다
Horizon을 시작합니다.
php artisan horizon
방문/horizon
하면 계기판이 나타날 것입니다.이 상태에서 액세스
/test/sampletext3
.storage/logs/laravel-2018-12-11.log
[2018-12-11 **:**:**] local.INFO: It's work! | sampletext3
로그 출력이 성공하면수고하셨습니다.👏
그리고 좀 더 맞춤형으로 만들어서
exit(1)
이상하게 끝날 때까지 놀 수 있어요.실패한 작업 일람표에서 실패한 작업을 다시 이동할 수도 있습니다.
4. 마지막
비동기 처리는 라벨이 우리를 매우 배려했기 때문에 우리는 간단하게 실현할 수 있다는 것을 알게 되었다.
이후 슈퍼바이저 등으로 어떻게든 잘 움직여야 한다.
그냥 움직여 보려고 Horizon에 대해서도 소개했어요.
Horizon에는 또 다른 인증, 대기 상태가 길었을 때의 알림 등 기능이 있으니 반드시 확인해 주십시오공식 문서.
Reference
이 문제에 관하여(Laravel5.7에서 비동기 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yk-m/items/d65dedfa291d9cbfed38
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Laravel5.7에서 비동기 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yk-m/items/d65dedfa291d9cbfed38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)