我正在尝试将数据发送到Web Api ...这个想法是一张一张地装载很多纸。因此,我创建了一个工作来将此工作表发送给curl函数,该函数负责在DB上插入数据。我正在将这样的数组传递给我的工作:
0 => array:5 [
"xls_path" => "http://airviro.r9.cl/dev-sma/uploads/TEST_SO2_NO_PM101532702117.xlsx"
"sheet" => "Registros Crudos NO"
"estacion" => "DV1"
"tipo_dato" => "M"
"cont" => "0002"
]
1 => array:5 [
"xls_path" => "http://airviro.r9.cl/dev-sma/uploads/TEST_SO2_NO_PM101532702117.xlsx"
"sheet" => "Registros Crudos SO2"
"estacion" => "DV1"
"tipo_dato" => "M"
"cont" => "0001"]
2 => array:5 [
"xls_path" => "http://airviro.r9.cl/dev-sma/uploads/TEST_SO2_NO_PM101532702117.xlsx"
"sheet" => "Registros Crudos MP10"
"estacion" => "DV1"
"tipo_dato" => "M"
"cont" => "PM10"
]
每个位置都包含工作表信息...因此负责处理此数组的作业函数是:
public function handle()
{
$total_hojas = count($this->hojas["hojas"]);
$i=1;
$porcentaje = 0;
foreach ($this->hojas["hojas"] as $key => $value) {
$response = Insert::insertData($value);
$response = json_decode($response,true);
if($response["code"] == 0){
$porcentaje = $porcentaje + ($i/$total_hojas) * 100;
#actualizar estado de carga de las hojas en bd
DB::table('importacion')
->where('id', $this->hojas["import"])
->update(['comentario' => "Porcentaje de carga completado: $porcentaje%"]);
continue;
#$fila = DB::table('importacion')->select('*')->where('id','=',$this->hojas["import"])->get();
#dd($fila);
}
else{
DB::table('importacion')
->where('id', $this->hojas["import"])
->update(['comentario' => $response["msg"]]);
break;
}
$i++;
}
}
带有工作表数据的数组毫无问题地到达了我的工作的句柄功能...数组的第一个位置发送到curl函数...但是随后当foreach循环必须继续数组的下一个位置时并将其发送到服务..它只是不断循环遍历数组的位置0 ...服务在操作数组位置后返回一个确定的消息..所以当处理第一个消息时,我正在继续$ response变量没问题,它的第一张工作表数据保存在DB上...所以最终结果是,我不断收到第一条响应消息,并且foreach循环不处理其他位置...任何帮助??感谢您的宝贵时间。
更新!
curl函数上的$ response变量在处理数组的第二个位置时不返回任何内容...这是我的curl函数:
class Insert
{
protected $cliente;
public function __construct()
{
#Se inicializa la conecccion al servicio web
$this->cliente = curl_init('https://validar.r9.cl/load_avdata_xls');
}
public function insertData($data){
print_r($data);
curl_setopt($this->cliente, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($this->cliente, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($this->cliente, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($this->cliente, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->cliente, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$response = curl_exec($this->cliente);
print_r($response);
curl_close($this->cliente);
return $response;
}
}