PHP에서는 이벤트 구동 형 노드, Node.js 만 사용한 적이 없으므로 이벤트 디스 패칭 시스템이 PHP로 작동하는 방식을 이해하려고합니다 (예 : Laravel events, CakePHP events 및 Symfony event dispatcher).PHP 이벤트 전달 시스템 이해하기
이 예는 Laravel의 문서에 아파치에서 실행되는 PHP 스크립트의 수명 이후
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification',
],
];
은 기본적으로 요청의 수명이며,이 청취자는 각 요청 인스턴스화하는 모든 이벤트를 의미합니까?
내 애플리케이션에 120 명의 리스너가있는 경우 (예 : $listen
속성에 나열 됨) 페이지를 방문 할 때마다 120 개의 리스너가 모두 인스턴스화됩니까? 또는 리스너 객체는 적절한 이벤트가 전달 될 때만 인스턴스화됩니까?
요청의 전체 기간 동안 단일 이벤트가 실행되지 않을 수도있는 리스너가 각 요청에 대해 인스턴스화되는 것은 상당히 비효율적 인 것처럼 보입니다.
내가 염려해야 할 부분인가?
개별 이벤트에 대한 오버 헤드가 매우 낮다을 instansiated 않겠다 다음 실행시
my_cool_event_name
을 파견하지 않을 경우. – Augwa120 이벤트 리스너는 엔터프라이즈 급 CRM 또는 ERP 외부에서 약간 높은 것으로 보이지만 디스패처 자체가 이벤트 키를 기반으로 리스너 핸들러의 인스턴스를 제어한다고 생각합니다. 그래서 실제로 그것은 연관을 유지하는 배열이고, 첫 번째 레벨 조건이 충족 될 때 두 번째 수준 연관이 (발송자에 의해) 인스턴스화됩니다. –