我需要运行大约 20K 的 curl 请求,从请求中获取数据并使用 Spout 将其保存在 excel 中。重要的是我需要按顺序运行并按顺序保存数据。
我已将 PHP 超时设置为 0,但仍然失败。显示一个没有警告和成功消息的空白页面,并且没有产品保存在 xls 文件中。如果我为 1000 种左右的产品运行它,那么它工作正常。我怎样才能解决这个问题?
通过发送 curl 获取 XML 后,我正在执行 foreach 以获取所需的数据和
$writer->openToFile('products.xlsx');
foreach ($xml->Body->product as $products) {
$values = [ $products ];
$rowFromValues = WriterEntityFactory::createRowFromArray($values);
$writer->addRow($rowFromValues);
}
$writer->close();
function getCurl($url, $soapBody) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $soapBody,
CURLOPT_HTTPHEADER => array(
"Content-Type: text/xml",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
curl_close($curl);
return $response;
}
}