gpt4 book ai didi

c - 仅当上次 CURL 超过 10 秒前才执行 CURL

转载 作者:行者123 更新时间:2023-11-30 17:52:08 26 4
gpt4 key购买 nike

我在智能电表守护程序中使用此程序来记录气体消耗计数器:

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 来记住最后一个时间戳,并将其与 if ...then 中的实际时间戳进行比较,围绕所有这些 curl 内容进行构建。为此,直接使用 unixtime() 应该缓冲在另一个变量 current_time 中,以便与 last_time 进行比较。

有人可以帮我吗?我不习惯使用C...

谢谢!

最佳答案

你的方法很好。你可以这样做:

#include <time.h>

void http_post(const char *vzuuid)
{
static time_t last_time = 0;
time_t cur_time;

cur_time = time(NULL);
if (cur_time - last_time < 10)
return; /* nothing to do */

last_time = cur_time;

/* ... */
}

我不使用全局变量,而是使用静态变量来保存上次请求的最后时间。

关于c - 仅当上次 CURL 超过 10 秒前才执行 CURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com