脚本宝典收集整理的这篇文章主要介绍了大文件上的php – simplexml_load_string错误发生在一个系统上,但不是另一个,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
<?xML version="1.0"?> <RETS ReplyCode="0" ReplyText="operation Successful Reference ID: 9bac803e-b507-49b7-ac7c-d8e8e3f3aa89"> <COUNT Records="9506" /> <DELIMITER value="09" /> <COLUMNS> Sysid 1 2 3 4 5 6 </COLUMNS> <DATA> 252370080 Residential 0.160 No ADDR0 06051</DATA> <DATA> 252370081 Residential 0.440 Yes ADDR0 06043</DATA> <DATA> 252370082 Residential 1.010 No ADDR0 06023</DATA> <DATA>more tab delimited text</DATA> <!-- snip 9000+ lines --> </RETS>
我下载了一个响应的示例文件(大约22MB),这里我结束了我的调试和理智.两台服务器都运行PHP 5.3.8版,但请注意不同的结果.我确定,我可以这两个文件是一样的(我认为不同的文件大小,strlen,最后50个字符可以解释由Windows换行符额外的回车字符).测试脚本:
error_reporting(-1); ini_set('display_errors',1); $file = 'error-example.xml'; $xml = file_get_contents($file); echo 'fileSize: '; var_dump(filesize($file)); echo 'strlen: '; VAR_dump(strlen($xml)); echo 'simplexml object? '; var_dump(is_object(simplexml_load_string($xml))); echo 'Last 50 characters: '; var_dump(substr($xml,-50));
在Windows上本地输出:
filesize: int(21893604) strlen: int(21893604) simplexml object? bool(true) Last 50 characters: string(50) "RD DR CT Watertown 203-555-5555 </DATA> </RETS>"
远程UNIX服务器上的输出:
filesize: int(21884093) strlen: int(21884093) simplexml object? Warning: simplexml_load_string(): Entity: line 9511: parser error : internal error in /path/to/test.PHP on line 19 Warning: simplexml_load_string(): AULTED CeiLING IN FOYER,brICK FP IN FR,NEW FLOORING IN LR DR FR FOYER KITCHEN in /path/to/test.PHP on line 19 Warning: simplexml_load_string(): ^ in /path/to/test.PHP on line 19 Warning: simplexml_load_string(): Entity: line 9511: parser error : Extra content at the end of the document in /path/to/test.PHP on line 19 Warning: simplexml_load_string(): AULTED CEILING IN FOYER,NEW FLOORING IN LR DR FR FOYER KITCHEN in /path/to/test.PHP on line 19 Warning: simplexml_load_string(): ^ in /path/to/test.PHP on line 19 bool(false) Last 50 characters: string(50) "ORD DR CT Watertown 203-555-5555 </DATA> </RETS>"
> XML本身似乎是有效的,只要我能告诉(它在我的系统上工作).
> magic_quotes_runtime绝对是关闭的.
>工作服务器具有libxml版本2.7.7,而另一个具有2.7.6.真的可以有所作为吗?我找不到一个libxml更改日志,但似乎不太可能.
>这似乎只发生在响应/文件超过一定大小时,错误总是发生在下一个最后一行.
>我没有遇到内存问题,测试脚本会立即运行.
当您直接使用simplexml_load_file()时,检查行为是否有所不同,并尝试设置libxml解析器相关选项,例如.
simplexml_load_string($xml,'SimpleXMLElement',LIBXML_COMPACT | LIBXML_PARSEHUGE)
具体来说,您可能需要尝试LIBXML_PARSEHUGE标志.
以上是脚本宝典为你收集整理的大文件上的php – simplexml_load_string错误发生在一个系统上,但不是另一个全部内容,希望文章能够帮你解决大文件上的php – simplexml_load_string错误发生在一个系统上,但不是另一个所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。