本地Apache,用curl
和file_get_content
爬虫得到的数据都是完整的。部署到nginx服务器上,不论用curl
还是file_get_content
,同一页面有的时候数据只能获取一半,大多时候数据是完整的。这是什么原因呢。
本地Apache,用curl
和file_get_content
爬虫得到的数据都是完整的。部署到nginx服务器上,不论用curl
还是file_get_content
,同一页面有的时候数据只能获取一半,大多时候数据是完整的。这是什么原因呢。
先问下题主,楼上两位理解你的问题是不是方向错了,如果他们没错,请忽略下面。
如果他们错了,你的问题是不是可以简化为 PHP下 curl/file_get_content获取页面不完整,php是运行在一个用nginx代理或者解析的php-fpm实例中?
如果是这个意思,请测试回复 你是固定只能获得一定长度的内容,还是不固定长度?如果是固定长度,这个大小是多少?
15 回答8.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
2 回答744 阅读✓ 已解决
嗯 猜测一下默认获取长度在nginx上有限制,或者请求时间收到限制导致获取的数据不完整。还需要进行相关验证。毕竟也没遇到过这种情况。
刚才下去查了一下 ,Nginx的buffer机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
应该就是这个原因。
具体可以参考这个链接里面的内容nginx buffer