이번 주 초 Laravel Rest API로 작업할 때 시간 초과 오류 형태로 짜증나는 일이 발생했습니다. 이는 개발 문제로 인해 최종 사용자의 불만을 야기합니다. 전체 시나리오를 간략하게 설명하겠습니다.
외부 데이터 소스에서 데이터를 로드하고 필터링한 다음 json 반환을 위해 준비해야 했습니다. 데이터의 양은 크지 않았고 단일 요청에 10K 정도였습니다. 가장 큰 문제는 파일을 검색하고 필터링한 후 포맷하려고 할 때 발생했습니다. 그래서 다음 단계를 사용하여 디버깅을 시작했습니다.
쿼리가 최적화되어 있고 열도 인덱싱되었는지 확인하세요.
Chunk 방식을 꼭 사용하세요
포맷 저장소에서 불필요한 메서드/참조/구현/사용하지 않는 함수/외부 API 호출을 사용하지 않는지 확인하세요.
모든 확인이 완료되었으나 여전히 1분을 초과하여 게이트웨이 시간 초과 오류가 표시됩니다. 서비스 클래스는 다음과 같습니다.
repo 클래스는 다음과 같습니다.
육안으로 볼 때 10K 이상의 데이터 처리 및 조작에 대한 시간 초과 오류가 발생해서는 안 됩니다. 마지막에는 이런 일이 발생하는 이유에 대해 논의하고(실제로 구체적인 이유는 아니지만 가능성이 높음) 이제 Laravel Api Resource를 사용하여 이 문제를 해결하는 방법에 대해 논의합니다.
구현이 간단합니다. 먼저, 명령줄에서 Laravel Api 리소스를 생성하세요:
php artisan make:resource DataFormatterResource
그런 다음 모델 개체를 리소스로 보내고 아래 요구 사항에 따라 데이터 형식을 지정/조작합니다.
놀랍게도 응답시간은 3.7초밖에 걸리지 않았다?!
여기서 실제 문제를 파헤쳐보려고 노력했고 위에서 언급한 몇 가지 가능한 사례를 찾아 마지막에 정의했습니다. 사례가 제공됩니다:
제 프로젝트의 대부분의 서비스는 서비스 레이어에서 repo나 함수형 포맷터를 활용했는데, 이 경우에는 다른 원인이 있을 수 있어 이런 문제가 발생할 수 있어 어려움을 겪었습니다.
제가 강조하고 싶은 점은 모델 작업 시 Laravel Resources가 까다로운 상황에서 유용하게 사용될 수 있다는 것입니다.
이 글이 마음에 드셨다면 박수나 댓글을 남겨주세요. = “즐거운 코딩하세요!….” ?>
위 내용은 Laravel 리소스 또는 맞춤형 Repo?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!