有一个非常大的xml数据源我在PHP中解析所以我使用xmlReader因为simpleXML每次都失败 - 只是锁定并停止。即使使用xmlReader / simpleXML混合代码,它仍然会失败,所以我在xmlReader中完成所有操作 - 不幸的是。
所以,我很困惑在哪里打开和关闭与我的循环相关的xmlReader。我需要最好的记忆管理。
****Open reader Here????
Foreach ($modelArray as $model)// there are 10000 models
****OR open reader Here???
if(!$reader->open($request_url)){
echo "Error";
break;
}
while ($reader->readToNext('Product'){ // There are 500 Products per model
//do my node processing here. Grab nodes and add to mysql DB
}
return array('msg' => $msg,'addedProdsPerManu' =>$counter_addedProdsManu);
****Close Reader HERE?
}//close foreach
****OR Close Reader HERE?
对于最有效的内存利用率,我们非常感谢任何建议,因此该程序将一直运行。
谢谢
答案 0 :(得分:0)
以下/** */
/**
* If you can, open it here.
*/
Foreach ($modelArray as $model)// there are 10000 models
/**
* If you open the reader here, you are doing 10000 network requests.
*
* BUT depends on your needs, if the url must be get from the model, you'll
* have to connect here.
*/
if(!$reader->open($request_url)){
echo "Error";
break;
}
while ($reader->readToNext('Product'){ // There are 500 Products per model
//do my node processing here. Grab nodes and add to mysql DB
}
/**
* IF you opened the connection just before the while, THEN close it here.
*/
/**
* return HERE!??
* You're just checking the first model then!!
*/
return array('msg' => $msg,'addedProdsPerManu' =>$counter_addedProdsManu);
}//close foreach
/**
* If you could open the connection before the foreach, then close it here.
*/