php curl 获取数据不完整怎么办

藏色散人
发布: 2021-02-23 18:01:49
原创
4207人浏览过
php curl获取数据不完整的解决办法:1、去掉“CURLOPT_RETURNTRANSFER=true”;2、修改数据源服务器的nginx缓存配置。

php curl 获取数据不完整怎么办

本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。

php curl 获取数据不完整

 curl获取数据的时候,结果的字符串长度比较大。 相同的结果每次获取的数据都不全,并且长度也不一样。

 试着把 HEADER信息修改为except: 但还是不行(这个可以解决的问题是数据量太大导致获取结果为空的情况)。

立即学习PHP免费学习笔记(深入)”;

 去掉

 CURLOPT_RETURNTRANSFER = true
登录后复制

可以打印出完整数据

解决方案:

修改数据源服务器的nginx缓存配置【推荐:PHP视频教程

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 获取数据不完整怎么办的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号