我有一个通过玉米作业运行的小PHP脚本。 此脚本从数据库中读取记录,然后使用PHP的SimpleXMLElement对象创建.xml字符串。最后,我对API进行了cURL调用,然后将文件传输过来。
我遇到的问题是,如果数据库查询通常有更多的记录,那么脚本似乎不会通过所有记录运行。似乎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循环?如果没有任何线索可能导致这个问题?
谢谢
答案 0 :(得分:1)
首先,当你没有得到$ 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);