【发布时间】:2014-04-14 23:51:47
【问题描述】:
关于开销、内存消耗、资源使用和代码处理的难易程度,解析大型 XML 文件的首选方法是什么?
- simpleXml_load_file
- simplexml_load_string
- 将 simpleXML 对象转换为数组
- 将 simpleXML 转换为缓存
我正在使用 simpleXML 解析一个非常大的 XML 文档,该文档将返回用户请求的相关搜索结果。
$XMLproducts = simplexml_load_file("products.xml");
除了最终生成请求的搜索结果外,simpleXML 请求还将生成链接以进一步细化获得的搜索结果……
foreach($XMLproducts->product as $Product) {
if ($user_input_values == $applicable_xml_values) {
// all refined search filter links produced here, then displayed later
$refined_search_filter_Array1[] = URL code + (string)$Product->applicable_variable;
$refined_search_filter_Array2[] = URL code + (string)$Product->applicable_variable2;
}
...以及帮助生成搜索结果页面(因为每页将有 20 个搜索结果)。
foreach($XMLproducts->product as $Product) {
//coding to produce pages number links for the search results pages number
}
然后我们最终得到用户请求的实际搜索结果:
foreach($XMLproducts->product as $Product) {
if ($user_input_values == $applicable_xml_values) {
echo $Product->name ……
}}
由于用户可以点击多个细化的搜索过滤器链接以及页码链接以转到下一个搜索结果页面,因此将初始 simpleXML 请求转换为数组或进入缓存直到用户完成使用搜索结果?这样,当用户单击优化的搜索过滤器链接或单击链接以转到下一个搜索结果页面时,他/她将访问数组或缓存以执行此操作,而不是加载整个 XML 文件(使用另一个 simpleXML 请求)这样做。
感谢您的建议。
【问题讨论】:
-
你到底想缓存什么?
-
另外,XML 文件有多大?有多少用户同时请求该文件?
-
我想缓存从 simpleXML 请求中检索到的结果中的值。 XML 文件大约有 6MB,并且有增长的潜力。我相信只有一个用户可以每 2 秒调用一次 API。
标签: php xml arrays caching simplexml