>  기사  >  PHP 프레임워크  >  Laravel 이벤트 및 비동기 처리 정보

Laravel 이벤트 및 비동기 처리 정보

藏色散人
藏色散人앞으로
2020-12-29 09:20:113210검색

Framework 튜토리얼의 Laravel & Framework Tutorial 섹션의 Laravel 사건 및 비동기 처리에 대해 소개한 내용입니다. 필요한 친구들에게 도움이 되길 바랍니다!

Laravel 이벤트 및 비동기 처리 정보이벤트 생성

php aritsan make:event Test

이벤트와 리스너는 일대다 관리이며 하나의 이벤트는 여러 응답 이벤트에 해당합니다

$data를 정의합니다 code> 속성에는 이벤트가 트리거될 때 전달되는 데이터를 할당합니다.
   public $data;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;


    }

비즈니스를 시작하는 방법은 무엇인가요? $data 属性,赋值触发事件时传递的数据。

   public function test(){
       Test::dispatch('你好事件');
   }

如何在业务中触发?

namespace App\Lisenter;use App\Events\Test;class TestLisenter {
    public function handle(Test $test)
    {
        var_dump($test->data);
        //打印:你好事件
    }}

添加监听者

php artisan make:listener TestLisenter

/**
 * 应用程序的事件监听器映射
 *
 * @var array
 */protected $listen = [
    'App\Events\Test' => [
        'App\Listeners\TestListenter',
    ],];

如何接受  “你好事件?”

这个时候我们要创建, listen 对象来处理业务逻辑

laravel 有提供两种方案:

方案一:

EventServiceProvider 添加$listen 数组信息比如:

/**
 * 确定是否应自动发现事件和侦听器
 *
 * @return bool
 */public function shouldDiscoverEvents(){
    return true;}
方案二:

让系统自动处理,遍历指定目录
需要在EventServiceProvider

/**
 * 获取应该用于发现事件的监听器的目录
 *
 * @return array
 */
  protected function discoverEventsWithin()
    {
        return [
            $this->app->path('Lisenter'),//事件关联的监听器目录APP/Lisenters
            $this->app->path('Lisenter/test'),//事件关联的监听器目录APP/Lisenters/test
        ];
    }

리스너 추가

php artisan make:listener TestLisenter
namespace App\Lisenter;use App\Events\Test;use Illuminate\Contracts\Queue\ShouldQueue;class TestLisenter implements ShouldQueue{
    public function handle(Test $test)
    {
        var_dump($test->data);
        //打印:你好事件
    }}

"Hello 이벤트?"를 수락하는 방법

이제 비즈니스 로직을 처리하기 위한 청취 객체를 생성해야 합니다

laravel에는 제공되는 두 가지 옵션: 🎜
🎜🎜옵션 1:
🎜 EventServiceProvider에 $listen 배열 정보를 추가합니다. 예: 🎜rrreee
🎜🎜옵션 2:
🎜Let 시스템이 자동으로 처리하고 지정된 디렉터리를 탐색합니다
EventServiceProvider에 추가해야 합니다: 🎜rrreeerrreee🎜시스템이 자동으로 Listen을 일치시킵니다🎜🎜이 때 이벤트 프로세스는 완료되었습니다. 성공하지 못했거나 이벤트 큐 지연, 이벤트 참여 여부 판단, 실패 후 처리 등 이벤트 처리에 대해 자세히 알고 싶다면 문서를 참고하세요🎜🎜🎜🎜이벤트 큐 처리🎜🎜있다면 laravel의 대기열에 연결되지 않았습니다. 친구들은 다음을 참조하세요: Laravel Jobs🎜🎜TestListener에서 ShouldQueue 인터페이스만 구현하면 됩니다🎜🎜다음과 같습니다:🎜rrreee

위 내용은 Laravel 이벤트 및 비동기 처리 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제