【发布时间】:2015-01-31 00:27:36
【问题描述】:
我制作了一个脚本,它可以根据我的 Mysql 数据库中的一些表生成 XML。 该脚本在 PHP 中运行。
public function getRawMaterials($apiKey, $format = 'json') {
if($this::checkApiKey($apiKey)) {
if(!Cache::has($apiKey . '_rawMaterialData')) {
$companyID = DB::table('apiKeys')
->select('companyID')
->where('apiKey', $apiKey)
->pluck('companyID');
$rawMaterials = DB::table('rawMaterials')
->join('companySupplier', 'companySupplier.supplier', '=', 'rawMaterials.supplierID')
->where('companySupplier.company', $companyID)
->take(3)
->get();
$nutritions = DB::table('nevoExpl')->select('nutrientcode', 'nederlandse_nutrientnaam', 'meeteenheid_nutrient')->get();
$allergens = DB::table('allergens')->get();
$dangers = DB::table('dangers')->get();
$data = (array)$rawMaterials;
for($i = 0; $i < sizeof($data); $i++) {
$data[$i] = (array)$data[$i];
// Initialize these variables
$data[$i]['ingredients'] = array();
$data[$i]['nutritions'] = array();
$data[$i]['allergens'] = array();
//$data[$i]['dangers'] = array();
$ingredients = DB::table('ingredients')
->select('ingredients.*', 'rawMaterialIngredients.weight')
->join('rawMaterialIngredients', 'rawMaterialIngredients.ingredientID', '=', 'ingredients.ingredientID')
->where('rawMaterialIngredients.rawMaterialID', $data[$i]['rawMaterialID'])
->get();
$data[$i]['ingredients'] = (array)$ingredients;
for($j = 0; $j < sizeof($data[$i]['ingredients']); $j++) {
$data[$i]['ingredients'][$j] = (array)$ingredients[$j];
// Check what allergens are in the products
foreach($allergens as $allergen) {
if(array_key_exists($allergen->allergen, $data[$i])) {
if(!array_key_exists($allergen->allergen, $data[$i]['allergens']) && $data[$i][$allergen->allergen] == "M") {
$data[$i]['allergens'][$allergen->id] = array(
'allergenID' => $allergen->id,
'allergenName' => $allergen->allergen,
'allergenValue' => 'M'
);
}
unset($data[$i][$allergen->allergen]);
}
if(array_key_exists($allergen->allergen, $data[$i]['ingredients'][$j])) {
if(!array_key_exists($allergen->allergen, $data[$i]['allergens']) && $data[$i]['ingredients'][$j][$allergen->allergen] == "M") {
$data[$i]['allergens'][$allergen->id] = array(
'allergenID' => $allergen->id,
'allergenName' => $allergen->allergen,
'allergenValue' => 'M'
);
}
unset($data[$i]['ingredients'][$j][$allergen->allergen]);
}
}
// foreach($dangers as $danger) {
// if(array_key_exists($danger->danger, $data[$i]['ingredients'][$j])) {
// if(array_key_exists($danger->danger, $data[$i]['dangers'])) {
// $data[$i]['dangers'][$danger->danger] = "M";
// }
// unset($data[$i]['ingredients'][$j][$danger->danger]);
// }
// }
}
foreach($nutritions as $nutrition) {
if(!array_key_exists($nutrition->nutrientcode, $data[$i]['nutritions'])) {
$data[$i]['nutritions'][] = array(
'nutritionCode' => $nutrition->nutrientcode,
'nutritionName' => $nutrition->nederlandse_nutrientnaam,
'nutritionMeasure' => $nutrition->meeteenheid_nutrient,
'nutritionValue' => $data[$i][$nutrition->nutrientcode]
);
}
// Don't need this anymore, so let's get rid of it!
unset($data[$i][$nutrition->nutrientcode]);
}
}
$data['Generated_on'] = date('d-m-Y G:i:s', time());
Cache::put($apiKey . '_rawMaterialData', $data, 720);
}
else {
$data = Cache::get($apiKey . '_rawMaterialData');
}
}
else {
$data['error'] = 'Dit is geen geldige API code.';
}
return $this::format($data, $format);
}
使用这个脚本的问题是它在处理大量数据时会耗尽内存。 然而,我们需要处理这么多数据,因为我们想要制作一个可供客户使用的 xml。
目前我们将此脚本作为 API 运行,但我们愿意接受其他建议(甚至是与 PHP 无关的建议) 我们只是想要一种将我们的产品(到 API、FTP 或其他)导出到 XML(和 JSON)文件的方法,以便我们的客户可以使用它。我们也希望它是轻量级的。我们还希望它具有以下级别:
<xml>
<item>
<rawMaterialID>567</rawMaterialID>
<rawMaterialName>Gehakt 60 40 HOH</rawMaterialName>
<rawMaterialSpecDate>2014-10-19 16:17:14</rawMaterialSpecDate>
<rawMaterialSpecSource>koetsier vleeswaren bv</rawMaterialSpecSource>
<supplierID>28</supplierID>
<supplierDescription>gehakt hoh</supplierDescription>
<articleNumber>60250</articleNumber>
<supplierArticleNumber>2002733</supplierArticleNumber>
<barCode>0</barCode>
<originCountry>1</originCountry>
<productionCountry>1</productionCountry>
<id>1</id>
<company>15</company>
<supplier>28</supplier>
<ingredients>
<ingredient>
<ingredientID>226</ingredientID>
<ingredientName>varkensvlees</ingredientName>
<ingredientNameIMIS>varkensvlees</ingredientNameIMIS>
<enumber/>
<enumberAddition/>
<general_comments/>
<further_info/>
<albaList>Varkensvlees</albaList>
<adi/>
<aeromonas>Z</aeromonas>
<baccereus>Z</baccereus>
<campylobact>Z</campylobact>
<clostbot>Z</clostbot>
<clost_Perf>Z</clost_Perf>
<e_coli>Z</e_coli>
<e_coli_O157H7>Z</e_coli_O157H7>
<listeria>Z</listeria>
<salmonella>Z</salmonella>
<shigella>Z</shigella>
<staph_Aur>Z</staph_Aur>
<staph_coag>Z</staph_coag>
<yersinia>Z</yersinia>
<vibrio_col>Z</vibrio_col>
<vibrio_para>Z</vibrio_para>
<vibrio_vuln>Z</vibrio_vuln>
<mycobacteria>Z</mycobacteria>
<brucella>Z</brucella>
<aflatoxin>Z</aflatoxin>
<patuline>Z</patuline>
<echratoxin>Z</echratoxin>
<fusarium>Z</fusarium>
<ergot>Z</ergot>
<fumonisin>Z</fumonisin>
<rubratoxin>Z</rubratoxin>
<zearalenone>Z</zearalenone>
<hepatitis>Z</hepatitis>
<viral_gastroenteritis>Z</viral_gastroenteritis>
<polio>Z</polio>
<rickets>Z</rickets>
<prions>Z</prions>
<moulds_yeast>Z</moulds_yeast>
<anisakis_marina>Z</anisakis_marina>
<cryptosporidium_parvum>Z</cryptosporidium_parvum>
<echinococcus_granulosis>Z</echinococcus_granulosis>
<entamoeba_histolytica>Z</entamoeba_histolytica>
<giardia_lamblia>Z</giardia_lamblia>
<fasciola_hepatica>Z</fasciola_hepatica>
<clonorchis_sinensis>Z</clonorchis_sinensis>
<taenia_saginata>Z</taenia_saginata>
<taenia_solium>Z</taenia_solium>
<toxoplasma_gondii>Z</toxoplasma_gondii>
<trichinella_spiralis>Z</trichinella_spiralis>
<meelmijt_Tyroglyphus_farinae_L>Z</meelmijt_Tyroglyphus_farinae_L>
<flies>Z</flies>
<ants>Z</ants>
<mites>Z</mites>
<beetles>Z</beetles>
<cockroaches>Z</cockroaches>
<moths>Z</moths>
<rodents>Z</rodents>
<weevils>Z</weevils>
<bone_fragments>Z</bone_fragments>
<stones>Z</stones>
<insect_fragments>Z</insect_fragments>
<choke>Z</choke>
<metal_fragments>Z</metal_fragments>
<glass>Z</glass>
<createdBy/>
<dateCreated>2014-07-02 14:38:22</dateCreated>
<changedBy/>
<dateChanged/>
<weight>600</weight>
</ingredient>
<ingredient>
<ingredientID>200</ingredientID>
<ingredientName>rundvlees</ingredientName>
<ingredientNameIMIS>rundvlees</ingredientNameIMIS>
<enumber/>
<enumberAddition/>
<general_comments/>
<further_info/>
<albaList>Rundvlees</albaList>
<adi/>
<aeromonas>Z</aeromonas>
<baccereus>Z</baccereus>
<campylobact>Z</campylobact>
<clostbot>Z</clostbot>
<clost_Perf>Z</clost_Perf>
<e_coli>Z</e_coli>
<e_coli_O157H7>Z</e_coli_O157H7>
<listeria>Z</listeria>
<salmonella>Z</salmonella>
<shigella>Z</shigella>
<staph_Aur>Z</staph_Aur>
<staph_coag>Z</staph_coag>
<yersinia>Z</yersinia>
<vibrio_col>Z</vibrio_col>
<vibrio_para>Z</vibrio_para>
<vibrio_vuln>Z</vibrio_vuln>
<mycobacteria>Z</mycobacteria>
<brucella>Z</brucella>
<aflatoxin>Z</aflatoxin>
<patuline>Z</patuline>
<echratoxin>Z</echratoxin>
<fusarium>Z</fusarium>
<ergot>Z</ergot>
<fumonisin>Z</fumonisin>
<rubratoxin>Z</rubratoxin>
<zearalenone>Z</zearalenone>
<hepatitis>Z</hepatitis>
<viral_gastroenteritis>Z</viral_gastroenteritis>
<polio>Z</polio>
<rickets>Z</rickets>
<prions>Z</prions>
<moulds_yeast>Z</moulds_yeast>
<anisakis_marina>Z</anisakis_marina>
<cryptosporidium_parvum>Z</cryptosporidium_parvum>
<echinococcus_granulosis>Z</echinococcus_granulosis>
<entamoeba_histolytica>Z</entamoeba_histolytica>
<giardia_lamblia>Z</giardia_lamblia>
<fasciola_hepatica>Z</fasciola_hepatica>
<clonorchis_sinensis>Z</clonorchis_sinensis>
<taenia_saginata>Z</taenia_saginata>
<taenia_solium>Z</taenia_solium>
<toxoplasma_gondii>Z</toxoplasma_gondii>
<trichinella_spiralis>Z</trichinella_spiralis>
<meelmijt_Tyroglyphus_farinae_L>Z</meelmijt_Tyroglyphus_farinae_L>
<flies>Z</flies>
<ants>Z</ants>
<mites>Z</mites>
<beetles>Z</beetles>
<cockroaches>Z</cockroaches>
<moths>Z</moths>
<rodents>Z</rodents>
<weevils>Z</weevils>
<bone_fragments>Z</bone_fragments>
<stones>Z</stones>
<insect_fragments>Z</insect_fragments>
<choke>Z</choke>
<metal_fragments>Z</metal_fragments>
<glass>Z</glass>
<createdBy/>
<dateCreated>2014-07-02 14:38:22</dateCreated>
<changedBy/>
<dateChanged/>
<weight>400</weight>
</ingredient>
</ingredients>
<nutritions>
<nutrition>
<nutritionCode>n_01001</nutritionCode>
<nutritionName>Energie</nutritionName>
<nutritionMeasure>kcal</nutritionMeasure>
<nutritionValue>233</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_01002</nutritionCode>
<nutritionName>Energie</nutritionName>
<nutritionMeasure>kJ</nutritionMeasure>
<nutritionValue>969</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_02001</nutritionCode>
<nutritionName>Stikstof totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>3.1</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_02002</nutritionCode>
<nutritionName>Eiwit totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>19.2</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_02003</nutritionCode>
<nutritionName>Eiwit plantaardig</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_02004</nutritionCode>
<nutritionName>Eiwit dierlijk</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>19.2</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03001</nutritionCode>
<nutritionName>Vet totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>17.2</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03002</nutritionCode>
<nutritionName>Som van de vetzuren</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>16.2</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03004</nutritionCode>
<nutritionName>Vetzuren totaal verzadigd</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>6.9</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03006</nutritionCode>
<nutritionName>Vetzuren enkelv onverz cis</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>7.5</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03008</nutritionCode>
<nutritionName>Vetzuren meerv onverz</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>1.3</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03009</nutritionCode>
<nutritionName>Linolzuur (C18:2(n-6)cis)</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>1.1</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_03136</nutritionCode>
<nutritionName>Vetzuren totaal trans</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_04001</nutritionCode>
<nutritionName>Cholesterol</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>28.8</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05001</nutritionCode>
<nutritionName>Koolhydraten totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0.3</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05002</nutritionCode>
<nutritionName>Suiker Totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0.3</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05003</nutritionCode>
<nutritionName>Glucose</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05005</nutritionCode>
<nutritionName>Fructose</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05006</nutritionCode>
<nutritionName>Lactose</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05008</nutritionCode>
<nutritionName>Maltose</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05009</nutritionCode>
<nutritionName>Saccharose</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05010</nutritionCode>
<nutritionName>Polysacchariden totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05011</nutritionCode>
<nutritionName>Polyolen totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05012</nutritionCode>
<nutritionName>Lactitol</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05013</nutritionCode>
<nutritionName>Xylitol</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05014</nutritionCode>
<nutritionName>Sorbitol</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_05015</nutritionCode>
<nutritionName>Isomalt</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_06001</nutritionCode>
<nutritionName>Voedingsvezel totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0.3</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_07001</nutritionCode>
<nutritionName>Water</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>63.7</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_08001</nutritionCode>
<nutritionName>Alcohol totaal</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09001</nutritionCode>
<nutritionName>Calcium</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>9</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09002</nutritionCode>
<nutritionName>Fosfor</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>169</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09003</nutritionCode>
<nutritionName>IJzer totaal</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>1.3</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09006</nutritionCode>
<nutritionName>Natrium</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0.177</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09007</nutritionCode>
<nutritionName>Kalium</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>303</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09008</nutritionCode>
<nutritionName>Magnesium</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>19</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_09009</nutritionCode>
<nutritionName>Zink</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>3.22</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_10001</nutritionCode>
<nutritionName>Selenium</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_10002</nutritionCode>
<nutritionName>Koper</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_10003</nutritionCode>
<nutritionName>Jodium</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11001</nutritionCode>
<nutritionName>Retinol</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11002</nutritionCode>
<nutritionName>Retinol equivalenten</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11003</nutritionCode>
<nutritionName>Beta-caroteen</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11005</nutritionCode>
<nutritionName>Vitamine B1</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11006</nutritionCode>
<nutritionName>Vitamine B2</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11007</nutritionCode>
<nutritionName>Vitamine B6 totaal</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11008</nutritionCode>
<nutritionName>Vitamine B12</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11009</nutritionCode>
<nutritionName>Vitamine D totaal</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11010</nutritionCode>
<nutritionName>Vitamine E totaal</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11011</nutritionCode>
<nutritionName>Vitamine C</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11013</nutritionCode>
<nutritionName>Foliumzuur</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11014</nutritionCode>
<nutritionName>Nicotinezuur</nutritionName>
<nutritionMeasure>mg</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11020</nutritionCode>
<nutritionName>Alfa-caroteen</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11022</nutritionCode>
<nutritionName>Zeaxanthine</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11024</nutritionCode>
<nutritionName>Lycopeen</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11035</nutritionCode>
<nutritionName>Vitamine K totaal</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11036</nutritionCode>
<nutritionName>Vitamine K1</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11038</nutritionCode>
<nutritionName>Vitamine K2</nutritionName>
<nutritionMeasure>ug</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11039</nutritionCode>
<nutritionName>Zout</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11040</nutritionCode>
<nutritionName>Omega 3 vetzuren N-3</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
<nutrition>
<nutritionCode>n_11041</nutritionCode>
<nutritionName>Omega 6 vetzuren N-6</nutritionName>
<nutritionMeasure>g</nutritionMeasure>
<nutritionValue>0</nutritionValue>
</nutrition>
</nutritions>
<allergens>
<allergen>
<allergenID>14</allergenID>
<allergenName>rundvlees</allergenName>
<allergenValue>M</allergenValue>
</allergen>
<allergen>
<allergenID>15</allergenID>
<allergenName>varkensvlees</allergenName>
<allergenValue>M</allergenValue>
</allergen>
</allergens>
</item>
</xml>
我希望有人可以帮助我们。
【问题讨论】:
-
如果我没看错,您正在构建一个海量数据结构,然后以特定格式输出。如果您有内存问题,解决此问题的正常方法是将其拆分为较小的结构并逐个输出。这类似于某些 XML 阅读器的工作方式(使用回调)。这将是一个不平凡的切换,但如果你想减少内存使用量,它最初似乎是唯一的选择。
-
基本思想 - 分解你的结构并编写一些将输出单个实体的东西 - 在你的循环中调用它,随着你的进行丢弃数据结构。也就是说,您的数据库库可能会遇到问题,因为看起来您可以从那里一口气获得所有内容。您最好对每条返回的记录进行回调,或者在返回结果集时循环遍历结果集,而不是在将其全部从数据库中取出后进行循环。
-
是的,我也一直在考虑让 centos 像每小时通过 cronjob 一次运行 50 条记录一样运行这个脚本。但是,难道没有像官方的方式来处理这种事情吗?
-
“官方”?你的意思是像 PHP 管理机构正式批准的那样? ;-) 我知道你的意思,是的,我会说“官方”的做法是编写一些可以轻松分解并在使用资源时丢弃资源的东西。那可以是使用回调,也可以是
->next样式循环/迭代器 -
你能写一个你的建议的小例子吗@Rob Baillie