Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:长字符串、json_编码、var_转储和echo_Php_Echo_Json_Var Dump - Fatal编程技术网

PHP:长字符串、json_编码、var_转储和echo

PHP:长字符串、json_编码、var_转储和echo,php,echo,json,var-dump,Php,Echo,Json,Var Dump,我注意到我正在开发的应用程序正在崩溃,我设法将其缩小到这个问题(我已经为它设置了一个测试用例): 当我var_转储变量$json时,我得到了正确的输出: string(786998) "["abcdefghijklm....ijklmEND"]" 当我回显变量$json时,您可以非常短暂地看到屏幕上出现了一些东西,但随后它消失了,最终响应似乎为空 如果我用字符串而不是数组重复上述操作,同样的情况也会发生 如果我用一个字符串重复上述操作,并省略json_编码步骤,那么一切都会按预期进行,var_

我注意到我正在开发的应用程序正在崩溃,我设法将其缩小到这个问题(我已经为它设置了一个测试用例):

当我var_转储变量$json时,我得到了正确的输出:

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());