Tôi đang sử dụng libcurl để gửi lệnh API đến một dịch vụ cục bộ (ví dụ: trên 127.0.0.1).libcurl trì hoãn trong 1 giây trước khi tải lên dữ liệu, dòng lệnh curl không
Chương trình được thiết kế để thay thế một kịch bản shell (có sử dụng chương trình curl
.)
Tất cả mọi thứ đang làm việc, ngoại trừ có sự chậm trễ 1 giây nơi nào đó, tức là 1 giây trôi qua kể từ khi tôi gọi curl_easy_perform()
khi chức năng gọi lại đọc của tôi được gọi đầu tiên.
C chương trình đang sử dụng các tùy chọn này (kiểm tra lỗi & đang gọi lại bỏ qua):
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:12345/x");
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)getLengthOfCommandObject());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, &myReadFunction);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &myWriteFunction);
Nhưng nếu tôi chạy curl
từ vỏ như thế này:
$ curl --data-binary '<command>' http://127.0.0.1:12345/x
nó sẽ gửi yêu cầu ngay lập tức , mà không bị chậm trễ 1 giây.
Điều gì có thể gây ra sự chậm trễ và có tùy chọn nào tôi có thể đặt để ngăn chặn không?
Sửa Các máy chủ dựa trên mongoose
Bạn đã thử thực hiện nhị phân của bạn với _strace_? nó có thể hiển thị bất kỳ sự chậm trễ nào khi thực hiện chương trình. Man page of strace có nhiều tùy chọn liên quan đến thời gian. – VoidPointer
@VoidPointer, strace không tiết lộ bất cứ điều gì có liên quan, nhưng tôi tìm thấy nguyên nhân. Xem câu trả lời của tôi. – finnw