來源:互聯網
上載者:User
關鍵字
php
mysql
windows-server
請教各位大神,本人公司當前項目需要獲得會員的購物積分,但是新的積分查詢程式構建在另一個平台之上,我需要通過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; } }
查詢積分後,我通過本機資料庫查詢使用者的基本資料, 然後用關聯陣列組合,目前能稍微快些。。
但是如果查詢量繼續變大的話, 速度會大幅度降低。。
回複內容:
請教各位大神,本人公司當前項目需要獲得會員的購物積分,但是新的積分查詢程式構建在另一個平台之上,我需要通過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.我不知道SOAP服務是否給你們提供了其他的調用方法,看你樣本裡面是根據使用者來查詢其對應的積分,因為你的需求是根據積分分段來查詢使用者,如果有類似getCustomerByScore()方法可能調用起來更方便,你現在的方法應該是要遍曆所有使用者,如果有根據分數查詢使用者集合的方法的話,資料量應該會減少不少。
2.如果對方的服務單個請求時間就是很長,那也沒有神馬辦法 -_-[找老大看能不能談]
3.如果你們的會員積分資訊不是那麼需要即時性,可以用cronjob等定時跑,把使用者的會員資訊臨時儲存在你們本地,這樣才有進一步最佳化的可能。