Rumah > Artikel > pembangunan bahagian belakang > 如何优化调用soap接口查询的速度
请教各位大神,本人公司当前项目需要获得会员的购物积分,但是新的积分查询程序构建在另一个平台之上,我需要通过SOAP接口的方式获取最近的积分数据。但批量调用SOAP查询积分的速度将受到大幅度的限制。
目前查询的新需求是获取某个积分区间的用户信息(用户数据信息在我本人公司,对方公司的数据表上没有建立任何索引,每次积分查询都是通过关联查询的方式获取积分...[-_- 有点悲剧]。虚心请教..有没有什么好的办法可以提升查询的速度。。。
调用SOAP的PHP函数如下:
<code><?php public function getCustomerScore($custId = 0) { $connect = new SoapClient(C('SOAP_HOST'), array('trace' => true, 'exceptions' => true)); $request = $connect->__soapCall('getCustomerScore', array(array('custId' => $custId))); $response = json_decode($request->getCustomerScoreResult, true); if (empty($response['error'])) { $score = json_decode($response['scoreList'][0], true); return $score['scoreBalance']; } else { return false; } }</code>
查询积分后,我通过本地数据库查询用户的基本信息, 然后用关联数组组合,目前能稍微快些。。
但是如果查询量继续变大的话, 速度会大幅度降低。。
请教各位大神,本人公司当前项目需要获得会员的购物积分,但是新的积分查询程序构建在另一个平台之上,我需要通过SOAP接口的方式获取最近的积分数据。但批量调用SOAP查询积分的速度将受到大幅度的限制。
目前查询的新需求是获取某个积分区间的用户信息(用户数据信息在我本人公司,对方公司的数据表上没有建立任何索引,每次积分查询都是通过关联查询的方式获取积分...[-_- 有点悲剧]。虚心请教..有没有什么好的办法可以提升查询的速度。。。
调用SOAP的PHP函数如下:
<code><?php public function getCustomerScore($custId = 0) { $connect = new SoapClient(C('SOAP_HOST'), array('trace' => true, 'exceptions' => true)); $request = $connect->__soapCall('getCustomerScore', array(array('custId' => $custId))); $response = json_decode($request->getCustomerScoreResult, true); if (empty($response['error'])) { $score = json_decode($response['scoreList'][0], true); return $score['scoreBalance']; } else { return false; } }</code>
查询积分后,我通过本地数据库查询用户的基本信息, 然后用关联数组组合,目前能稍微快些。。
但是如果查询量继续变大的话, 速度会大幅度降低。。
1.我不知道SOAP服务是否给你们提供了其他的调用方法,看你示例里面是根据用户来查询其对应的积分,因为你的需求是根据积分分段来查询用户,如果有类似getCustomerByScore()方法可能调用起来更方便,你现在的方法应该是要遍历所有用户,如果有根据分数查询用户集合的方法的话,数据量应该会减少不少。
2.如果对方的服务单个请求时间就是很长,那也没有神马办法 -_-[找老大看能不能谈]
3.如果你们的会员积分信息不是那么需要实时性,可以用cronjob等定时跑,把用户的会员信息临时保存在你们本地,这样才有进一步优化的可能。