Laravel에서 cron 작업을 사용하여 대용량 CSV 파일 가져오기
P粉024986150
2023-09-02 20:12:27
<p>저는 <strong>Laravel 8</strong>을 사용하고 있으며 <strong>수십억 개의 제품 가격을 업데이트하고 싶습니다</strong>. 이 <strong>코드를 추가했는데 잘 작동했지만<strong>효율적이지 않았고</strong>서버의 부하가 늘어났습니다</strong> </p>
<pre class="brush:php;toolbar:false;">{를 시도해보세요
$priceCsvs = PriceCsv::whereStatus(PriceCsv::PENDING)->get();
foreach($priceCsvs를 $price로) {
dump($price->name.'이 시작되었습니다.');
$csvData = fopen($price->file_url, 'r');
$firstline = 사실;
while (($data = fgetcsv($csvData, 555, ',')) !== false) {
if (!$firstline && !empty($data)) {
덤프($data);
}
$firstline = 거짓;
}
fclose($csvData);
dump($price->name."은 끝입니다");
}
} 잡기(예외 $ex) {
dump($ex->getMessage());
}</pre>
<p><em><strong>요점은 다음과 같습니다. </strong></em><strong>CSV 파일</strong> 또는 다른 파일에서 입력을 얻을 수 있는 방법이 있습니까? ;strong> 1000회 후에 수면을 추가하세요</strong>효과가 있습니다. </p>
배치직을 찾고 있다면 확인해보세요
작업 예약
기본적으로 일부 콘솔(artisan) 명령을 정의한 다음 콘솔 커널 파일에 예약합니다. 스케줄러는 artisan을 사용하여 실행되며 1분마다 명령(cron 작업 정의)을 실행하는 것이 좋습니다. 커널 일정 정의가 "php artisan Schedule:work" 명령이 실행되는 순간과 일치하면 작업이 실행됩니다.