0

我需要运行大约 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;
    }
}
4

0 回答 0