欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 网页输出信息不全

程序员文章站 2022-05-24 21:42:10
...
我的php通过socket 接收服务端传过来的数据, 我看长度和server端传过来的字节数是相等的, 但是就是输出不全, 我通过htmlentities 输出的, 难道网页字节数还有限制么? 每次提交查询返回结果, 输出的信息总是少一些, 还不一定少多少, 比如第一次少1000多个字节, 下次有可能少2000个这样 该怎么解决呢?

我在php+apache环境下试验就正常, 用的xampp. 在linux环境, nginx+php+php-fpm就不行, 输出不全,是什么地方设置有问题么?


回复讨论(解决方案)

有人能指教下是什么问题么?

既不知道你在做什么,也不知道你是怎么做的
这样没头没脑的问题,让人如何解答?

一个php网页, 通过HTML网页的form, post给php代码, 然后通过socket发送一个请求信息给server端, server端接收到信息后, 生成一堆数据, 二进制的, 然后发送给php端, php端接收数据, php在接收数据后, 调用了strlen 测试了一下消息体的长度, 和server端发送的包长度是一样的, 然后在网页上显示出来, 就这样一个过程, 我在webserver为apche的情况下, 测试了一下, 接收是对的, 我用的是xampp. 就是在 nginx+php+php-fpm这种环境下接收后打印输出信息不全. 同样的代码, 目前不知道是什么情况...

也没看懂怎么回事。
但form传值不可能大到网页都要限制,你试下不用htmlentities输出呢,每一步都打出结果来看一下源代码,如果有特殊字符被解析了。
之前遇到过在处理json时有window和linux字符多少不一样的问题,但也就是开头几个字符,截取就行了。

echo htmlentities($data[$i],ENT_NOQUOTES,"utf-8")."
"; 我是用这个输出的, 可每次都输出一部分, 而且有时多有时少... 不知道怎么回事 开头的4个字节的整形数据我已经解析出来了, 然后后面全是二进制字符串,是包括中文的xml数据集合. 关键我现在找不到原因, 我在本地用xampp测试全部正常, 只有放到linux服务器上出错... 没有头绪

既然是 php在接收数据后, 调用了strlen 测试了一下消息体的长度, 和server端发送的包长度是一样的
确认一下,两个服务器环境下长度都是一样的吗?
那么问题就出在显示上了

是的 3太服务器都是这样 是配置问题还是什么地方的问题. 现在就是不好解决 不晓得各位是否遇到过..

如果数据不是很长的话,你可贴出数据的base64编码,以便分析原因

刚刚我截取的数据片段 我测试了一下 可以全部显示出来... 到底该怎么解决呢 多谢

这是一个 XML 字符串,虽然所有
但是其中的中文是 GBK 编码的(至少你给的这部分是)
你应该检查输出时的处理代码

我处理了.... 呵呵 如下 :
$recv_res = iconv("gbk", "utf-8", $recv_res);

然后echo的时候 做的echo htmlentities($data[$i],ENT_NOQUOTES,"utf-8")."
";
我就怀疑 是不是什么地方限制了字节数的输出.....

能再帮我想想么 多谢 我还没解决呀...

谁能指教下么?

就这么 $recv_res = iconv("gbk", "utf-8", $recv_res); 是可以的吗?
如果它其中的某个成员就是 utf-8 的呢?不就乱套了吗?

贴代码

可是我在apache+php+mysql环境下是正常的.. 都能输出, 而且我把数据量减少, 也能完整输出.. 我觉得不是字符编码的问题, 而且写源数据的时候就已经指定字符编码为gbk的了, 接收的话应该也是这个

有人知道原因么?

有人能告知下原因么 多谢

如果你用的是Nginx,可以查看下是否是Nginx开启反向代理导致反向代理tmp目录缓存没有权限或者缓存过小导致。