有个需求在一台服务器上查询出一些数据,然后推送到另一台服务器上。查询出的数据大概一万多条,用浏览器执行php curl的时候,过一段时间浏览器就跳到–无法显示该页–上,curl的过期时间还有php脚本执行时间都调的很大,应该不是这两个到期了。如果数据量小就没问题,求解这是什么原因
curl有两个超时参数
–connect-timeout 尝试连接的最大时长
-m/–max-time 处理的最大时长
另外也可能是数据量大小的问题,需要在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就没办法把数据传输过去,所以你的数据最好做一下分段。