nginx下PHP 部分curl和file_get_content得到的数据不完整

本地Apache,用curlfile_get_content爬虫得到的数据都是完整的。部署到nginx服务器上,不论用curl还是file_get_content,同一页面有的时候数据只能获取一半,大多时候数据是完整的。这是什么原因呢。

阅读 4.2k
2 个回答

嗯 猜测一下默认获取长度在nginx上有限制,或者请求时间收到限制导致获取的数据不完整。还需要进行相关验证。毕竟也没遇到过这种情况。
刚才下去查了一下 ,Nginx的buffer机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
应该就是这个原因。
具体可以参考这个链接里面的内容nginx buffer

先问下题主,楼上两位理解你的问题是不是方向错了,如果他们没错,请忽略下面。

如果他们错了,你的问题是不是可以简化为 PHP下 curl/file_get_content获取页面不完整,php是运行在一个用nginx代理或者解析的php-fpm实例中?

如果是这个意思,请测试回复 你是固定只能获得一定长度的内容,还是不固定长度?如果是固定长度,这个大小是多少?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题