gpt4 book ai didi

php - xml_parse 无内存错误 PHP

转载 作者:行者123 更新时间:2023-12-04 19:30:10 26 4
gpt4 key购买 nike

我在使用 xml_parse 时遇到了一个奇怪的错误。我的脚本通过 xml_parse 函数在 XML 文件的最后一行返回“无内存”错误。仅当文件大小大于 10Mb 时才会发生这种情况。少一点是可以接受的。但我有 3Gb 可用于 PHP 脚本,总内存为 32Gb。

这个脚本曾经在另一台服务器上工作时工作(PHP 为 2Gb,总共 16Gb),它可以处理更大的文件。但它是 FreeBSD,现在它在 CentOS 6.4 下。

可能有人有同样的情况?

最佳答案

在 libxml "LIBXML_PARSEHUGE"中有硬编码的限制查看 http://php.net/manual/en/libxml.constants.php了解详情。

但您不需要降级 libxml。只需更改调用 xml_parse 的方式即可。

例如,对于一个超过 10MB 的文件,这种方式是行不通的:

$fileContent = file_get_contents("/tmp/myFile.xml");
if (!xml_parse($this->xmlParser, $fileContent, true))
{
$xmlErreurString = xml_error_string(xml_get_error_code($xmlParser));
}

但是,如果您将文件 5 x 5MB 读取,就可以了:

$xmlParser = xml_parser_create();
$fp = fopen("/tmp/myFile.xml", "r");
while($fileContent = fread($fp, 1024*1024*5))
{
if (!xml_parse($xmlParser, $fileContent, feof($fp)))
{
$xmlErreurString = xml_error_string(xml_get_error_code($xmlParser));
}
}

关于php - xml_parse 无内存错误 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com