в объекте PHP cURL есть опция тайм-аута, которая автоматически останавливает сценарий?

У меня есть небольшой скрипт 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? если нет никакой подсказки, что может быть причиной этой проблемы?

благодарю вас

-1

Решение

Во-первых, не возвращайте 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector