>  기사  >  백엔드 개발  >  Laravel 리소스 또는 맞춤형 Repo?

Laravel 리소스 또는 맞춤형 Repo?

PHPz
PHPz원래의
2024-08-21 16:37:32375검색

이번 주 초 Laravel Rest API로 작업할 때 시간 초과 오류 형태로 짜증나는 일이 발생했습니다. 이는 개발 문제로 인해 최종 사용자의 불만을 야기합니다. 전체 시나리오를 간략하게 설명하겠습니다.

외부 데이터 소스에서 데이터를 로드하고 필터링한 다음 json 반환을 위해 준비해야 했습니다. 데이터의 양은 크지 않았고 단일 요청에 10K 정도였습니다. 가장 큰 문제는 파일을 검색하고 필터링한 후 포맷하려고 할 때 발생했습니다. 그래서 다음 단계를 사용하여 디버깅을 시작했습니다.

  • 쿼리가 최적화되어 있고 열도 인덱싱되었는지 확인하세요.

  • Chunk 방식을 꼭 사용하세요

  • 포맷 저장소에서 불필요한 메서드/참조/구현/사용하지 않는 함수/외부 API 호출을 사용하지 않는지 확인하세요.

모든 확인이 완료되었으나 여전히 1분을 초과하여 게이트웨이 시간 초과 오류가 표시됩니다. 서비스 클래스는 다음과 같습니다.

Laravel Resource or Customized Repo?

repo 클래스는 다음과 같습니다.

Laravel Resource or Customized Repo?

육안으로 볼 때 10K 이상의 데이터 처리 및 조작에 대한 시간 초과 오류가 발생해서는 안 됩니다. 마지막에는 이런 일이 발생하는 이유에 대해 논의하고(실제로 구체적인 이유는 아니지만 가능성이 높음) 이제 Laravel Api Resource를 사용하여 이 문제를 해결하는 방법에 대해 논의합니다.


구현이 간단합니다. 먼저, 명령줄에서 Laravel Api 리소스를 생성하세요:

php artisan make:resource DataFormatterResource

그런 다음 모델 개체를 리소스로 보내고 아래 요구 사항에 따라 데이터 형식을 지정/조작합니다.

Laravel Resource or Customized Repo?

Laravel Resource or Customized Repo?

놀랍게도 응답시간은 3.7초밖에 걸리지 않았다?!
여기서 실제 문제를 파헤쳐보려고 노력했고 위에서 언급한 몇 가지 가능한 사례를 찾아 마지막에 정의했습니다. 사례가 제공됩니다:

  1. Laravel API 리소스는 일부 종속성 주입과 함께 repo를 사용하는 경우 데이터에 액세스하고 조작하기 위한 일관된 인터페이스를 제공합니다. 이를 통해 효율적인 코드를 더 쉽게 작성하고 일반적인 성능 병목 현상을 피할 수 있습니다.
  2. Laravel API 리소스는 캐싱 ​​및 기타 기술을 사용하여 배열 원시 형식 지정에만 사용되는 데이터 검색 및 처리 속도를 향상시키므로 성능에 최적화되어 있습니다.
  3. Laravel API 리소스는 요청 헤더에 따라 데이터베이스 쿼리 결과를 JSON 또는 XML로 자동으로 직렬화합니다. 이렇게 하면 직렬화 코드를 직접 작성해야 하는 번거로움이 줄어듭니다.

제 프로젝트의 대부분의 서비스는 서비스 레이어에서 repo나 함수형 포맷터를 활용했는데, 이 경우에는 다른 원인이 있을 수 있어 이런 문제가 발생할 수 있어 어려움을 겪었습니다.
제가 강조하고 싶은 점은 모델 작업 시 Laravel Resources가 까다로운 상황에서 유용하게 사용될 수 있다는 것입니다.

이 글이 마음에 드셨다면 박수나 댓글을 남겨주세요.

위 내용은 Laravel 리소스 또는 맞춤형 Repo?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:스톤 게임 II다음 기사:스톤 게임 II