CLS Demo --- ## 日志上报demo ``` setKey("name"); $content ->setValue("zhangsan"); $log->setContents([$content]); $log->setTime(time()); $logGroup->setLogs([$log]); $logGroupList ->setLogGroupList([$logGroup]); $pb_str = $logGroupList->serializeToString(); try { // 实例化一个证书对象,入参需要传入腾讯云账户secretId,secretKey $cred = new Credential("【secretId】", "【secretKey】"); // 实例化一个http选项,可选的,没有特殊需求可以跳过 $httpProfile = new HttpProfile(); $httpProfile->setReqMethod("POST"); // post请求(默认为post请求) $httpProfile->setReqTimeout(60); // 请求超时时间,单位为秒(默认60秒) $httpProfile->setEndpoint("cls.tencentcloudapi.com"); // 指定接入地域域名(默认就近接入) // 实例化一个client选项,可选的,没有特殊需求可以跳过 $clientProfile = new ClientProfile(); $clientProfile->setSignMethod("TC3-HMAC-SHA256"); // 指定签名算法(默认为HmacSHA256) $clientProfile->setHttpProfile($httpProfile); // 实例化要请求产品(以cls为例)的client对象,clientProfile是可选的 $client = new ClsClient($cred, "ap-guangzhou", $clientProfile); $resp = $client->call_octet_stream("UploadLog", array( "X-CLS-TopicId" => "[TopicID]", ), $pb_str); // 输出json格式的字符串回包 print_r($resp->toJsonString()); } catch(TencentCloudSDKException $e) { echo $e; } ``` ## php项目中如何使用protobuf 1、官网下载安装最新版protoc: https://github.com/protocolbuffers/protobuf/releases (具体根据自己的操作系统去选择) 根据pb文件,生成对应的php实现代码 ``` protoc --php_out=./ cls.proto ``` 2、 composer.json中引入pb生成好的文件 ``` { ...此处省略 "autoload": { ...此处省略 "psr-4": { "GPBMetadata\\": "./examples/cls/v20201016/proto/GPBMetadata", "Cls\\": "./examples/cls/v20201016/proto/Cls" } } } ``` 3、 引入google probuf 依赖 ``` composer require "google/protobuf" ``` ## protoc文件 php protoc 仅支持pb3.0语法 ``` syntax = "proto3"; package cls; message Log { int64 time = 1; message Content { string key = 1; string value = 2; } repeated Content contents= 2; } message LogTag { string key = 1; string value = 2; } message LogGroup { repeated Log logs= 1; optional string contextFlow = 2; optional string filename = 3; optional string source = 4; repeated LogTag logTags = 5; } message LogGroupList { repeated LogGroup logGroupList = 1; } ```