【问题标题】:Load xml only once仅加载一次 xml
【发布时间】:2014-09-05 04:05:59
【问题描述】:

我只需要加载一次 xml 文件.. 这是在一个函数中

    static $xml = 0;
    if($xml == 0){
        $xml =  simplexml_load_file('themes/colors.xml');
    }

这应该有效吗?我如何测试文件是否只加载一次?

【问题讨论】:

  • 记录、打印、在文件加载时以某种方式提供反馈。因此,在加载它的行 (simplexml_load_file) 下,放置回显或打开文件以附加日志消息。对于默认值,我会使用null。取决于simplexml_load_file 可以返回什么。你做的是对的,static 应该在这里工作。
  • 您可以将您的测试代码放在一个非常大的循环中,并将执行时间与对该代码的单个调用进行比较。
  • 每次你要打电话给simplexml_load_file时打印一些东西?

标签: php xml


【解决方案1】:

此函数在失败时返回 false,因此您可以在调用该函数后的某个时间点检查是否有 $xml === false

为什么你认为它会加载多次?如果您认为它可能被多次加载的原因与您的其余代码有关,您应该提取调用以将文件加载到它自己的方法/函数中。

另外,最好将simplexml_load_file 的调用包装在一个确保文件存在的if 语句中:

$filename = 'themes/colors.xml';
if(file_exists($filename)){
  $xml =  simplexml_load_file($filename);
}

如果有错误,可以致电libxml_get_errors确定问题所在,如下所述:libxml_get_errors docs

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多