coingecko获取token price --php版
1.创建一个数据表
DROP TABLE IF EXISTS `txzh_token_price`;
CREATE TABLE `txzh_token_price` (`id` int(11) NOT NULL AUTO_INCREMENT,`token_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种id',`symbol` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种符号',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种名称',`price` decimal(18, 6) NULL DEFAULT NULL COMMENT '币种价格',`vs_currencies` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '换算币种',`update_time` int(10) NULL DEFAULT NULL COMMENT '更新时间',`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:0=不更新 1=更新',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
2.php代码如下
<?phpnamespace app\im\controller;use GuzzleHttp\Client;
use app\im\model\mysql\User;
use app\im\model\mysql\TokenPrice;class Task
{/*** 获取代币价格* @return string */public function getTokenPrice(){// 需要的币种列表$tokenList = TokenPrice::where(array("status"=>1))->select();// 获取币种列表 $url2 = "https://api.coingecko.com//api/v3/coins/list"; $ids = '';foreach ($tokenList as $tokenInfo) {$ids .= $tokenInfo['token_ids'].",";}$client = new Client();$url = "https://api.coingecko.com/api/v3/simple/price?ids=".$ids."&vs_currencies=".$tokenInfo['vs_currencies'];$res = $client->request('GET', $url);if ($res->getStatusCode() != 200) {return false;}$resultData = $res->getBody();$resultDataArray = json_decode($resultData,true);foreach ($tokenList as $tokenInfo) {$price = $resultDataArray[$tokenInfo['token_ids']][$tokenInfo['vs_currencies']];$data = [];$data['price'] = $price;$data['update_time'] = time();TokenPrice::where(array("id"=>$tokenInfo['id']))->update($data);}return 'success';}
}