4

我正在使用 SimpleXML 将数据从 xml 文件导入 php 数组。

我正在使用该simplexml_load_file功能,但是一旦我得到了我需要的数据,我是否需要关闭文件或类似的东西来清除内存?

谢谢,

詹姆士

4

3 回答 3

7

不,你不需要对文件做任何事情。simplexml_load_file()读取内容后将在内部关闭文件。

如果你看一下 的源代码simplexml_load_file,你会发现它正在调用 xmllib2 形式的C函数xmlReadFile(),这反过来又会在读取后关闭文件。

PHP_FUNCTION(simplexml_load_file)
{
    php_sxe_object *sxe;
    char           *filename;
    int             filename_len;
    xmlDocPtr       docp;
    char           *ns = NULL;
    int             ns_len = 0;
    long            options = 0;
    zend_class_entry *ce= sxe_class_entry;
    zend_bool       isprefix = 0;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|C!lsb", &filename, &filename_len, &ce, &options, &ns, &ns_len, &isprefix) == FAILURE) {
        return;
    }

    docp = xmlReadFile(filename, NULL, options);  <--- reading the file
于 2012-11-23T10:50:49.953 回答
1

如果你的意思是这样fopen()fclose()然后没有......文件被simplexml解析并变成一个对象,如果你想真正迂腐,你可以在完成后取消设置对象。

于 2012-11-23T10:51:36.470 回答
0

无需关闭文件,因为它在读取整个文件时会自动关闭。但是,如果您因为服务器内存不足而询问,您应该查看内存消耗最多的服务器日志并释放它。

simplexml_load_file旨在让生活变得简单:)

于 2019-04-26T15:13:50.220 回答