Laravel Excel을 사용하여 Excel 파일을 읽을 수 있도록 Laravel 대기열을 설정했는데 작은 파일에 적합하게 작동합니다.
그러나 대용량 파일(100MB 이상) 및 400,000개 이상의 레코드의 경우 시간이 너무 많이 걸리고 거의 40GB의 서버 RAM을 소비합니다.
queue:work 명령을 실행하도록 감독자를 설정했습니다. 내 서버 메모리는 60GB입니다. 작은 파일의 경우 모든 것이 잘 작동하지만 큰 파일의 경우 작동하지 않습니다.
망원경을 이용해서 쿼리 시간도 확인해봤는데, 쿼리 시간이 그리 오래 걸리지는 않았어요.
현재 귀하의 질문에 대한 직접적인 답변은 없습니다. 목표 결과에 따라 많은 것이 달라집니다. 자신만의 해결 방법을 고안해야 합니다.
저의 가장 큰 관심사 중 하나는 대용량 Excel 파일을 청킹하거나 분할하여 대기열에 넣는 것입니다. Laravel 작업 일괄 처리를 활용할 수도 있습니다.
소개할 수 있는 또 다른 것은 이러한 무거운 작업을 더 나은 다른 기계로 수행하는 마이크로서비스 시스템입니다.
하지만 제가 말했듯이 이런 문제에 대한 유일한 해결책은 없습니다. 이건 스스로 알아내야 해요.
이러한 문제에 직면한 모든 사람들에게 Spout를 사용하는 것이 좋습니다. 그것은 매력처럼 작동합니다. 나는 이를 위해 3개의 PHP 서비스를 시도했고 결국에는 스파우트만 작동했습니다.
https://opensource.box.com/spout/
https://github.com/box/spout