在 Laravel 中使用 cron 作業匯入大型 CSV 文件
P粉024986150
2023-09-02 20:12:27
<p>我正在使用 <strong>Laravel 8</strong>,並且我想要<strong>更新數十億個產品價格</strong>。我添加了這個<strong>代碼,它工作正常</strong>,但它<strong>效率不高</strong>,它增加了<strong>服務器上的負載</strong> 。 </p>
<pre class="brush:php;toolbar:false;">try {
$priceCsvs = PriceCsv::whereStatus(PriceCsv::PENDING)->get();
foreach ($priceCsvs as $price) {
dump($price->name." is started");
$csvData = fopen($price->file_url, 'r');
$firstline = true;
while (($data = fgetcsv($csvData, 555, ',')) !== false) {
if (!$firstline && !empty($data)) {
dump($data);
}
$firstline = false;
}
fclose($csvData);
dump($price->name." is End");
}
} catch (\Exception $ex) {
dump($ex->getMessage());
}</pre>
<p><em><strong>重點是:</strong></em>有沒有辦法從<strong>CSV 文件</strong>或任何其他文件<strong>在輸入1000 次後加入睡眠</strong>有效的方法。 </p>
如果您正在尋找安排工作,請查看
任務排程
#基本上定義一些控制台(artisan)命令,然後在控制台核心檔案中安排它們。調度程式使用 artisan 執行,建議每分鐘執行一次指令(定義 cron 作業)。如果核心調度項定義與「php artisan Schedule:work」命令運行的分鐘一致,那麼您的作業將執行。