修复: Java doGet超时30秒+poller详细日志

- doGet超时从10秒增加到30秒,确保poller有足够时间
- poller调用添加耗时统计和详细日志
- 修复pullPendingTransactions中的语法错误
- 解决: Java调用poller超时导致补单失败
This commit is contained in:
2026-07-15 20:25:01 +08:00
parent e791548e87
commit a5edbfe314
+27 -7
View File
@@ -541,8 +541,8 @@ public class WebManager {
try {
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(urlStr))
.timeout(Duration.ofSeconds(10))
.header("User-Agent", "Sdf1-WebManager/2.8")
.timeout(Duration.ofSeconds(30)) // ★ 2026-07-15 增加到30秒,确保poller有足够时间连接MySQL
.header("User-Agent", "Sdf1-WebManager/2.9")
.header("Accept", "application/json")
.GET()
.build();
@@ -1502,9 +1502,20 @@ public class WebManager {
try {
String pollerUrl = webBaseUrl + "/api/poller_online.php?secret="
+ java.net.URLEncoder.encode(secretKey, "UTF-8");
long pollerStart = System.currentTimeMillis();
String pollerResp = doGet(pollerUrl);
if (pollerResp != null && pollerResp.contains("\"result\":\"ok\"")) {
plugin.getLogger().info("[快速补单] 补单成功: " + pollerResp.substring(0, Math.min(100, pollerResp.length())));
long pollerElapsed = System.currentTimeMillis() - pollerStart;
if (pollerResp != null) {
if (pollerResp.contains("\"result\":\"ok\"")) {
plugin.getLogger().info("[快速补单] 补单成功 (" + pollerElapsed + "ms): " + pollerResp.substring(0, Math.min(150, pollerResp.length())));
} else if (pollerResp.contains("\"result\":\"already_running\"")) {
plugin.getLogger().info("[快速补单] 补单进程正在运行,跳过 (" + pollerElapsed + "ms)");
} else {
plugin.getLogger().warning("[快速补单] 补单返回: " + pollerResp.substring(0, Math.min(150, pollerResp.length())) + " (" + pollerElapsed + "ms)");
}
} else {
plugin.getLogger().warning("[快速补单] 补单无响应(null),耗时: " + pollerElapsed + "ms");
}
} catch (Exception ignored) {
// 补单失败不影响交易拉取,静默忽略
@@ -6118,15 +6129,24 @@ public class WebManager {
try {
// ★ 2026-07-15 补单机制:拉取交易前先触发 poller_online.php 补单
// 平台 HTTP 回调被 Cloudflare WAF 拦截,只能靠本脚本读平台 MySQL 已支付订单补单。
// 先等补单返回(doGet 内置 10s 超时)再拉取 web_transactions,确保充值能到账。
// 先等补单返回(doGet 内置 30s 超时)再拉取 web_transactions,确保充值能到账。
try {
String pollerUrl = webBaseUrl + "/api/poller_online.php?secret="
+ java.net.URLEncoder.encode(secretKey, "UTF-8");
long pollerStart = System.currentTimeMillis();
String pollerResp = doGet(pollerUrl);
long pollerElapsed = System.currentTimeMillis() - pollerStart;
if (pollerResp != null) {
plugin.getLogger().info("[Web交易] 补单触发完成: " + pollerResp);
if (pollerResp.contains("\"result\":\"ok\"")) {
plugin.getLogger().info("[Web交易] 补单成功 (" + pollerElapsed + "ms): " + pollerResp.substring(0, Math.min(150, pollerResp.length())));
} else if (pollerResp.contains("\"result\":\"already_running\"")) {
plugin.getLogger().info("[Web交易] 补单进程正在运行,跳过 (" + pollerElapsed + "ms)");
} else {
plugin.getLogger().warning("[Web交易] 补单返回: " + pollerResp.substring(0, Math.min(150, pollerResp.length())) + " (" + pollerElapsed + "ms)");
}
} else {
plugin.getLogger().warning("[Web交易] 补单触发无响应(继续拉取)");
plugin.getLogger().warning("[Web交易] 补单无响应(null),耗时: " + pollerElapsed + "ms,继续拉取");
}
} catch (Exception pollerEx) {
plugin.getLogger().warning("[Web交易] 补单触发异常(忽略,继续拉取): " + pollerEx.getMessage());