ガス消費量のカウンターをログに記録するために、スマートメーターデーモンで次の手順を実行します。
void http_post(const char *vzuuid) {
sprintf(url, "http://%s:%d/%s/data/%s.json?ts=%llu", vzserver, vzport, vzpath, vzuuid, unixtime());
CURL *curl;
CURLcode curl_res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl)
{
FILE* devnull = NULL;
devnull = fopen("/dev/null", "w+");
curl_easy_setopt(curl, CURLOPT_USERAGENT, DAEMON_NAME " " DAEMON_VERSION );
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, devnull);
if( (curl_res = curl_easy_perform(curl)) != CURLE_OK) {
syslog(LOG_INFO, "HTTP_POST(): %s", curl_easy_strerror(curl_res) );
}
curl_easy_cleanup(curl);
fclose ( devnull );
}
curl_global_cleanup();
}
最後の呼び出しが10秒以上前の場合にのみこれを実行したい. 私はグローバル変数 last_time を考えて、最後のタイムスタンプを記憶し、それを実際のタイムスタンプと比較して、すべてのカールのものを構築しました。そのためには、unixtime() の直接使用を別の変数 current_time にバッファリングして、last_time と比較するために使用する必要があります。
誰でも私を助けてもらえますか?C言語に慣れていない...
ありがとうございました!