php curl post 数据量过大的问题

有个需求在一台服务器上查询出一些数据,然后推送到另一台服务器上。查询出的数据大概一万多条,用浏览器执行php curl的时候,过一段时间浏览器就跳到--无法显示该页--上,curl的过期时间还有php脚本执行时间都调的很大,应该不是这两个到期了。如果数据量小就没问题,求解这是什么原因

阅读 11.9k
7 个回答

curl有两个超时参数
--connect-timeout <seconds> 尝试连接的最大时长
-m/--max-time <seconds> 处理的最大时长
另外也可能是数据量大小的问题,需要在php.ini里设置
max_input_time 每个PHP页面接收数据所需的最大时间
memory_limit 每个PHP页面所吃掉的最大内存

你要看是哪里查询的问题还是推送的问题。。

php脚本执行时间调再长都没用
因为通常php超时是由于php-fpm超时引起的 尝试修改php-fpm超时时间

一般网络传输都有一个量的限制,比如文件下载,很多都是用了类似断点续传的道理,请求也是,看看你自己的业务需求,怎么多次获取数据,比如常用的分页等等。在量能正常操作的时候,一次性处理当然是最经济的。

你一次推送的数据太多了,还是做个队列,从里面取出一定的数据,然后post到另一台服务上吧,改大参数但是执行起来还是很耗时间和资源的

//虽然很反感HTTP请求需要长时间的响应(严重占用资源)

//但问题还是得解决下
//首先, --connect-timeout 是curl客户端主动设定的值, 意思为连接多长时间无响应后断开.

//然而, 你忽略了另一个问题, 服务端也可以断开的
//假设你的服务端是 (nginx/apache) + php
//那么, nignx/apache 上也有timeout设置的, 可能是nginx/apache主动断开了

//另外php如果连接mysql等数据库, 也有timeout设置, 如果没有长时间的查询, 可忽略这处.

会错你的意思了, php 有个配置 max_execution_time 即最大执行时间
因为你这个脚本是特例, 所以单独在这个php文件上写

ini_set("max_execution_time", 300);
新手上路,请多包涵

这个问题几年前遇到过,PHP post数据貌似超过了64M(印象中)post就没办法把数据传输过去,所以你的数据最好做一下分段。

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