php - 如何优化调用soap接口查询的速度
迷茫
迷茫 2017-04-10 17:22:44
0
1
382

请教各位大神,本人公司当前项目需要获得会员的购物积分,但是新的积分查询程序构建在另一个平台之上,我需要通过SOAP接口的方式获取最近的积分数据。但批量调用SOAP查询积分的速度将受到大幅度的限制。

目前查询的新需求是获取某个积分区间的用户信息(用户数据信息在我本人公司,对方公司的数据表上没有建立任何索引,每次积分查询都是通过关联查询的方式获取积分...[-_- 有点悲剧]。虚心请教..有没有什么好的办法可以提升查询的速度。。。

调用SOAP的PHP函数如下:

 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; } }

查询积分后,我通过本地数据库查询用户的基本信息, 然后用关联数组组合,目前能稍微快些。。

但是如果查询量继续变大的话, 速度会大幅度降低。。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复 (1)
Peter_Zhu

1.我不知道SOAP服务是否给你们提供了其他的调用方法,看你示例里面是根据用户来查询其对应的积分,因为你的需求是根据积分分段来查询用户,如果有类似getCustomerByScore()方法可能调用起来更方便,你现在的方法应该是要遍历所有用户,如果有根据分数查询用户集合的方法的话,数据量应该会减少不少。
2.如果对方的服务单个请求时间就是很长,那也没有神马办法 -_-[找老大看能不能谈]
3.如果你们的会员积分信息不是那么需要实时性,可以用cronjob等定时跑,把用户的会员信息临时保存在你们本地,这样才有进一步优化的可能。

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!