У меня есть небольшой скрипт PHP, который запускается через задание кукурузы.
Этот скрипт читает записи из базы данных, а затем с помощью PHP-объекта SimpleXMLElement создаю строку .xml. наконец, я делаю вызов cURL API и передаю файл поверх.
Проблема, с которой я сталкиваюсь, заключается в том, что если запрос к базе данных имеет гораздо больше записей, чем обычно, то сценарий, по-видимому, не проходит через все записи. Похоже, что CURL выполнить break;
что остановит цикл foreach от прохождения всех записей.
код что-то вроде этого
$results = array(........);
foreach($result AS $r){
$xml = new SimpleXMLElement();
$UpFile = $xml->addChild('UpFile');
...
...
...
$ch = curl_init($url);
curl_setopt_array($ch, $options);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('xml' => $xml->asXML()) );
$result = curl_exec($ch);
$result_xml = simplexml_load_string( $result);
if (!$result){
echo curl_error($ch) . '<br />';
return false;
}
curl_close($ch);
}
Мне интересно, есть ли предел, который имеет объект cURL, который автоматически разорвет цикл foreach? если нет никакой подсказки, что может быть причиной этой проблемы?
благодарю вас
Во-первых, не возвращайте false, если вы не получите $ result.
Во-вторых, вы можете увеличить время ожидания, как это
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds - the default is 30, I believe
А также в верхней части сценария
set_time_limit(0);
Других решений пока нет …