多級分銷對接第三方API獲取資料系統的優化

2022-03-23 06:17:17 字數 1776 閱讀 9318

最近在做乙個基於有讚的多級分銷管理系統,所有成員的店面均在有贊**,使用有讚api獲得他們的業績,但是有讚提供的分銷只有一級,故製作該系統。考慮到減輕工作量,理清層次關係,採用了oop設計方法,將資料庫,表封裝為基類,分銷成員,店面等繼承表。

但是在列出銷售量報表和分銷商的時候出現了嚴重效能問題,由於分銷商的業績獎勵是與其下級分銷商掛鉤的,故封裝資料庫的時候,進行了dfs遍歷來獲得所有分銷商的關係樹,然而,在列出銷售報表的時候卻並不需要這樣的關係,dfs在php語言上的時間花銷極大,導致乙個頁面開啟需要10s以上的時間,故對其進行第一步優化,在資料庫的封裝函式中設定dfs開關:

這個是database類的部分實現,其中部分敏感資料已隱藏。

connect_error) throw new exception('connect error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);

$result=$mysqli->query("select `id` from member_new");

$row=$result->fetch_array();

$i=0;

while($row)

$mysqli->close();

} static public function doquery($string)

static public function querysell($start,$end){}}

member類是繼承自table:class table

public function updateall() //do not change id!!!

reset($this->data);

} public function update($key)

public function set($key,$data) //recommended

public function get($key) //recommended

}封裝了對錶的基本操作,簡化以後的**編寫.下面member類的建構函式可以完成dfs功能,加設開關引數後,可以在某些場合不試用dfs而大大提公升效率:class member extends table

}} if($store)

}} $mysqli->close();

}(部分敏感函式已隱藏)

另外,在對前端的ajax響應的php指令碼中,加入快取的支援,由於有讚的api呼叫速度較慢,然而這種分銷**的資料對實時性的要求並不是很高,故採用伺服器快取的方式來減少與有贊通訊這部分導致的速度減緩.另外,本地化的物件代替從遠端資料庫讀取資訊,也減少了查詢資料庫的開支.cache物件的實現如下,將物件的序列化**存於伺服器本地:

3600*24)return false;

return $array['data'];

}static public function updatecache($string,$data)

}後端ajax響應頁面根據cache類的反饋選擇獲取本地資料,或是請求伺服器更新本地資料:fetch_array();

echo $row[0];

exit(0);

case 'get':

if($array=cache::readcache("member"))

else

cache::updatecache("member",$arr);

echo json_encode($arr);

} exit(0);

經過以上優化,原本響應時間在15s左右的頁面,現在響應時間為0.5s左右.

第三方平台對接UU跑腿

namespace retail controller use think controller uu跑腿 class uudeliverycontroller extends controller 獲取驗證碼 public function getcode data,獲取openid public...

關於農行對接第三方介面

最近在乙個專案中,需要與農行對接b2c的充值介面,碰到了一些問題,現記錄一下。在拿到農行的介面demo後,按照他們的demo開發完。在本地測試ok,但卻沒有回傳的url。就是一般網上購物後,會有個類似 返回 的按鈕。經過詢問說,只能 在外網 正式環境下測試,那好吧,等部署到伺服器上,卻一直報這個錯誤...

第三方平台API呼叫

其實都遵守乙個協議,一直想寫篇總結來著,突然對著螢幕就沒什麼好說的了 就是兩點,第一獲取令牌,第二用令牌去換取資訊 第一次多用key或者key srect,得到的是token 第二次 用token去呼叫令牌 傳送的請求有2中,post get 罷了其實這就是精髓 第一獲取令牌,第二用令牌去換取資訊 ...