因为项目需要,需要从本地提交数据到远程服务器上,然后远程服务器对提交的数据对比后,再返回数据给本地,本地再存储到数据库中。
本地环境是 Linux + Nginx 1.6 + MySQL 5.6 + PHP 7.3 。 本地每次提交的数据有几百条数据,远程服务器对请求的数据长度有要求,本地需要提交的数据每一条数据都超过了远程的数据长度要求,所以目前只能一条条的发送请求,一旦请求的次数过多( 5 条),本地服务器就会报 502 错误。
请教下,怎么优化这个数据提交的流程呢?远程服务器因为有其他项目在运行,不能修改其配置,只能本地去配合远程进行优化。
1
luckyrayyy 2020-04-23 01:48:42 +08:00
做这么一个限制还不让改也太睿智了.....
首先,先确定你的方向没有问题,有其他项目在运行也不等于不能动吧。 另外,如果确定只能用现在的方案,那没很大优化空间,你试出来最大长度,然后一次一次来呗。要是只对单次长度做了限制而服务器负载压力很小,就在前端做个异步,直接几十个请求过去。 |
2
tanranran 2020-04-23 01:50:10 +08:00
压缩数据,然后 POST 上传给服务器
|
3
mingl0280 2020-04-23 04:41:26 +08:00 via Android
手写个 websocket 传呗……
|
4
xuanbg 2020-04-23 06:09:30 +08:00
这不是 hash 算法大干快上的时候么?客户端算一个哈希上传,服务端也算一个哈希出来比对就行了呀。只是需要注意双方计算哈希的时候,对象序列化后属性的顺序可能不一致的问题。
|
5
kaiki 2020-04-23 06:36:12 +08:00
服务端不能动只能客户端用队列了
|
6
MrMike OP @luckyrayyy 目前已经是以最大的值进行请求了的
|
8
brader 2020-04-23 10:33:25 +08:00
如果服务端完全不能动的话,那你客户端可以做 2 个事情:
|
9
brader 2020-04-23 10:34:57 +08:00
1:限制请求频率(通过定时器)
2:单次请求利用最大化,每次打包请求的时候,尽可能多的打包几条数据,比如:服务端上限是 1000 字符,那你客户端,看下在 1000 字符以内,尽量装多几条数据,可以提高效率 |
10
dongisking 2020-04-23 13:17:28 +08:00 via Android
定时器一秒请求一次咯?
|
11
tabris17 2020-04-23 13:21:29 +08:00
异步处理啊
|
12
MrMike OP 问题解决了,用异步处理了。谢谢各位大佬的帮助,结贴。
|