phpcurl获取数据不完整的解决方法
这篇“php curl获取数据不完整的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php curl获取数据不完整的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。
10年积累的网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有伍家岗免费网站建设让你可以放心的选择与我们合作。
php有什么用
php是一个嵌套的缩写名称,指的是英文超级文本预处理语言(php:Hypertext Preprocessor)的缩写,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。
php curl获取数据不完整的解决办法:1、去掉“CURLOPT_RETURNTRANSFER=true”;2、修改数据源服务器的nginx缓存配置。
php curl 获取数据不完整
curl获取数据的时候,结果的字符串长度比较大。 相同的结果每次获取的数据都不全,并且长度也不一样。
试着把 HEADER信息修改为except: 但还是不行(这个可以解决的问题是数据量太大导致获取结果为空的情况)。
去掉
CURLOPT_RETURNTRANSFER = true
可以打印出完整数据
解决方案:
修改数据源服务器的nginx缓存配置
fastcgi_buffers 由原来的 8*128k修改到8*1M
以下引自https://segmentfault.com/a/1190000007513677
Nginx的buffer机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
比如如下配置:
fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 84K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 24K 共 2 个 buffers。
当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。
感谢你的阅读,希望你对“php curl获取数据不完整的解决方法”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注创新互联行业资讯频道!
分享标题:phpcurl获取数据不完整的解决方法
本文来源:http://ybzwz.com/article/jisjde.html