PHP:长字符串、json_编码、var_转储和echo
我注意到我正在开发的应用程序正在崩溃,我设法将其缩小到这个问题(我已经为它设置了一个测试用例): 当我var_转储变量$json时,我得到了正确的输出:PHP:长字符串、json_编码、var_转储和echo,php,echo,json,var-dump,Php,Echo,Json,Var Dump,我注意到我正在开发的应用程序正在崩溃,我设法将其缩小到这个问题(我已经为它设置了一个测试用例): 当我var_转储变量$json时,我得到了正确的输出: string(786998) "["abcdefghijklm....ijklmEND"]" 当我回显变量$json时,您可以非常短暂地看到屏幕上出现了一些东西,但随后它消失了,最终响应似乎为空 如果我用字符串而不是数组重复上述操作,同样的情况也会发生 如果我用一个字符串重复上述操作,并省略json_编码步骤,那么一切都会按预期进行,var_
string(786998) "["abcdefghijklm....ijklmEND"]"
当我回显变量$json时,您可以非常短暂地看到屏幕上出现了一些东西,但随后它消失了,最终响应似乎为空
如果我用字符串而不是数组重复上述操作,同样的情况也会发生
如果我用一个字符串重复上述操作,并省略json_编码步骤,那么一切都会按预期进行,var_dump和echo的结果是正确的
在整个过程中,错误日志中没有错误输出,我的内存限制和最大执行时间也正常:
[test] Memory limit: 256M
[test] Max Execution Time: 30
[test] Memory: 2134296B
有什么想法吗
关于我的申请的一些信息:
简而言之,有两台服务器。服务器A向服务器B发送HTTP请求,服务器B处理该请求并将响应发送回服务器A。响应始终是JSON编码的数组。如果响应中的一个数组值太长,服务器A将收到一个空响应。结果表明问题与服务器B无关,而是服务器A 服务器A是使用Netty API在Java中实现的 HTTP响应太长,正在分块,我的管道中没有HttpChunkAggregator,一旦我将它添加到everything中,一切都很好
ClientBootstrap cb = new ClientBootstrap(cf);
cb.getPipeline().addLast("codec", new HttpClientCodec());
cb.getPipeline().addLast("chunkaggregator", new HttpChunkAggregator(1048576));
cb.getPipeline().addLast("inflater", new HttpContentDecompressor());
cb.getPipeline().addLast("handler", new OutboundHandler());
我确实从外部检查了浏览器源代码,代码也在那里,谢谢你的评论,他们确实把我引向了正确的方向 你确定不是你的浏览器因为巨大的转储而损坏了吗?我不这么认为,如果我能成功地回送/var_转储一个同样长的字符串,成功地var_转储数组,为什么我也不能回送数组?关于浏览器限制。请从外部检查浏览器源代码(不是通过firebug等),您可能会在那里看到代码
ClientBootstrap cb = new ClientBootstrap(cf);
cb.getPipeline().addLast("codec", new HttpClientCodec());
cb.getPipeline().addLast("chunkaggregator", new HttpChunkAggregator(1048576));
cb.getPipeline().addLast("inflater", new HttpContentDecompressor());
cb.getPipeline().addLast("handler", new OutboundHandler());