php - 循环在 laravel 工作中没有按预期工作
问题描述
我正在使用League/csv解析csv
文件,然后将这些数据转储到数据库中。
结构如下:
$csv = Reader::createFromPath($csv_file_path, 'r');
$csv->setOutputBOM(Reader::BOM_UTF8);
$csv->addStreamFilter('convert.iconv.ISO-8859-15/UTF-8');
$csv->setHeaderOffset(0);
$csv_header = $csv->getHeader();
$loop = true;
while($loop){
$stmt = (new Statement())
->offset($offset)
->limit($limit)
;
$records = $stmt->process($csv);
foreach ($records as $record)
{
$rec_arr[] = array_values($record);
}
$records_arr = $service->trimArray($rec_arr);
if(count($records_arr)>0)
{
foreach($records_arr as $ck => $cv){
//map data and insert into database
}
}else{
$loop = false;
}
}
目前,我正在 laravel 队列中实现这个逻辑。它成功地插入了整组数据,但并没有停止该过程。
它一直卡在 messageprocessing
上。但是,如果我删除了该while
循环,那么它将以 message 停止processed
。
所以,我认为这应该是我在那里实施一些错误的逻辑。
寻找一个想法来解决这个问题。
解决方案
if(count($records_arr)>0)
这条线可能评估为true
总是。
您的代码永远不会达到$loop = false;
结束条件。
推荐阅读
- php - 将字符附加到 PHP 输出
- r - 在 R 中的 read_xls 中设置要读取的最大行数
- spring-boot - Spring boot admin:访问此资源需要完全身份验证
- java - BufferedReader 如何从 S3 读取文件?
- javascript - 如何使用 React 获取 cookie 数据?
- javascript - AngularJS - 提交按钮不禁用(我是新手)
- c - 如何使用 Fiddle 和 Windows API (dll) 在 Ruby 中运行 shellcode
- c# - 将 IntPtr 转换为音频数据数组
- python - 为 Python 排序添加额外的规则
- reactjs - 如何在 React JS 中实现 Google Places API?