1.先初始化 curl_init() 变量
2.设置变量的 URL header 超时 DNS curl_setopt()
3.执行 curl_exec()
4.检查执行结果
5.关闭curl curl_close()
$ch = curl_init();
// 设置 CURL 核心参数
curl_setopt($ch, CURLOPT_URL, $url);
// 将结果返回而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 模拟浏览器 User-Agent(和原代码一致)
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36');
// ========== 针对你纽约VPS的关键优化 ==========
// 连接超时(重点!比原代码的10秒短,避免卡死)
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
// 总请求超时(建议3秒内,比原10秒更合理)
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
// 启用DNS缓存,避免重复解析域名拖慢速度
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, true);
// 关闭TCP延迟,提升传输速度
curl_setopt($ch, CURLOPT_TCP_NODELAY, true);
// 禁用SSL验证(因为你用的是http,这行只是兜底,防止后续改https出问题)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
if ($response === false) {
$errorMsg = curl_error($ch);
$errorCode = curl_errno($ch);
throw new Exception("CURL请求失败 [{$errorCode}]:{$errorMsg}");
}
// 保留原有的编码转换逻辑(GBK转UTF-8)
$utf8Str = mb_convert_encoding($response, 'UTF-8', 'GBK');
// 关闭CURL资源
curl_close($ch);