PHP';s cURL对象是否具有自动停止脚本的超时选项?

PHP';s cURL对象是否具有自动停止脚本的超时选项?,php,curl,timeout,Php,Curl,Timeout,我有一个通过corn job运行的小PHP脚本。 该脚本从数据库读取记录,然后使用PHP的SimpleXMLElement对象创建一个.xml字符串。最后,我对一个API进行了一个cURL调用,并将文件传输到另一个API上 我遇到的问题是,如果数据库查询中有更多的记录,那么脚本似乎不会遍历所有记录。cURL似乎执行了一个中断将阻止foreach循环遍历所有记录 代码是这样的 $results = array(........); foreach($result AS $r){ $xml = ne

我有一个通过corn job运行的小PHP脚本。 该脚本从数据库读取记录,然后使用PHP的SimpleXMLElement对象创建一个.xml字符串。最后,我对一个API进行了一个cURL调用,并将文件传输到另一个API上

我遇到的问题是,如果数据库查询中有更多的记录,那么脚本似乎不会遍历所有记录。cURL似乎执行了一个
中断
将阻止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_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds - the default is 30, I believe
$results=数组(…);
foreach(结果为$r){
$xml=新的SimpleXMLElement();
$UpFile=$xml->addChild('UpFile');
...
...
...
$ch=curl\u init($url);
curl_setopt_数组($ch$options);
curl_setopt($ch,CURLOPT_POSTFIELDS,array('xml'=>$xml->asXML());
$result=curl\u exec($ch);
$result\u xml=simplexml\u load\u字符串($result);
如果(!$result){
回波旋度误差($ch)。“
”; 返回false; } 卷曲关闭($ch); }
我想知道cURL对象是否有一个自动中断foreach循环的限制?如果没有任何线索,是什么导致了这个问题


谢谢你

首先,当你没有得到$result时,不要返回false

第二,您可以像这样增加超时

$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_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds - the default is 30, I believe
而且,在脚本的顶部

set_time_limit(0);

好。。当curl错误发生时,您返回false。您必须替换
returnfalse使用
继续谢谢。我只是改变了建议。我会在接下来的几天检查它,看看在更改后这是否仍然是一个问题。谢谢你这没用。设置的时间限制(0);现在应该是一个问题,因为脚本在5秒内以执行。但问题似乎是循环并没有循环所有记录。我不知道还能查到什么?谢谢你的帮助和时间