在 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”命令运行的分钟一致,那么您的作业将执行。