Мне нужно выполнить около 20 000 запросов на скручивание, извлечь данные из запроса и сохранить их в Excel, используя Spout. Важно то, что мне нужно запускать последовательно и сохранять данные последовательно.
Я установил таймаут PHP на 0, но он все равно не работает. Показывает пустую страницу без предупреждения и без сообщения об успешном завершении, а продукт не сохраняется в файле xls. Если я запускаю его для 1000 продуктов или около того, то он работает нормально. Как я могу это исправить?
После получения 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;
}
}