php通过cURL爬取数据(3):CURLINFO_HTTP_CODE返回0的排查和解决方案

news2025/1/30 16:43:56

CURLINFO_HTTP_CODE返回0的排查和解决方案

  • 一、curl本地服务器需要DNS解析域名
  • 二、如何排查错误原因
  • 三、无法解析 DNS的程序升级方案
  • 四、宝塔配置DNS的操作方法
    • 1.etc/resolv.conf
    • 2.通过GUI界面

一、curl本地服务器需要DNS解析域名

在使用 curl 命令发送请求到域名地址,本地服务器需要进行 DNS 解析以获取域名对应的 IP 地址,否则,curl 命令将无法建立与目标服务器的连接。当使用 curl 命令发送请求时,curl 会尝试自动解析所提供的 URL 以获取 IP 地址。如果 DNS 解析成功,curl 将使用获取到的 IP 地址建立连接。如果 DNS 解析失败,curl 将无法连接到目标服务器。

因此,为确保 curl 命令在本地服务器上正常工作,请确保您的服务器可以进行 DNS 解析。可以在终端上使用以下命令来检查您的服务器是否可以进行 DNS 解析:

ping example.com

其中,“example.com” 是您需要测试的域名。如果命令能够成功进行 DNS 解析,则您的本地服务器可以成功解析域名。

二、如何排查错误原因

使用curl_error($curlHandle)排查错误原因

$host = "http://example.com/";
$curlHandle = curl_init($host);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_exec($curlHandle);
if (curl_errno($curlHandle)) {
    echo 'Error: ' . curl_error($curlHandle);
}
curl_close($curlHandle);

错误提示:

Could not resolve: example.com (Could not contact DNS servers)

“Could not resolve: example.comn (Timeout while contacting DNS servers)”错误提示表示无法解析服务器的 DNS,可能是服务器 DNS 配置错误或网络连接问题所致。您可以通过以下方法来进行排查和解决:

  1. 检查 DNS 设置:登录到您的服务器,查看 DNS 设置是否正确。可以使用以下命令来检查 DNS 服务商提供的 DNS 服务器地址是否正确:
  cat /etc/resolv.conf

如果 DNS 设置正确,您可以尝试更新 DNS 缓存并重新启动服务来解决问题:

sudo systemctl restart network
sudo systemctl restart named
  1. 检查网络连接:检查服务器的网络连接是否正常。可以使用以下命令来测试连接是否正常:

    ping www.lockdata.cn
    

    如果存在网络连接问题,可能需要联系网络管理员解决。

  2. 检查防火墙和代理:检查服务器上的防火墙和代理设置,确保 DNS 请求未被防火墙或代理拦截。可以尝试暂时关闭防火墙或代理,来确认是否影响 DNS 查询。

  3. 使用其他 DNS 服务器:如果您无法证实自己的 DNS 服务商的可用性,可以尝试使用其他 DNS 服务商提供的 DNS 服务器地址。

三、无法解析 DNS的程序升级方案

在 PHP 服务器上使用 curl 发送请求时,如果由于某些原因无法解析 DNS,可以使用以下方法来避免堵塞:

  1. 设置 CURLOPT_TIMEOUT:使用 CURLOPT_TIMEOUT 来设置超时时间,如果 curl 请求超时,将自动中止连接。使用以下代码设置 CURLOPT_TIMEOUT:

    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    

    在这个例子中,超时时间被设置为 10 秒。可以将这个值调整为更适合您的需求的值。

  2. 设置 CURLOPT_CONNECTTIMEOUT:使用 CURLOPT_CONNECTTIMEOUT 来设置连接超时时间,如果 curl 连接超时,将自动中止连接。使用以下代码设置 CURLOPT_CONNECTTIMEOUT:

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    

    在这个例子中,连接超时时间被设置为 5 秒。同样,可以将这个值调整为更适合您的需求的值。

  3. 设定 DNS 解析:如果 DNS 解析过慢或失败导致的 curl 堵塞问题仍然存在,可以尝试手动设定 DNS 解析。可以使用以下代码来设置 DNS 解析:

    curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 3600);
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    

    在这个例子中,DNS 解析缓存被设置为 3600 秒。此外,CURL_IPRESOLVE_V4 被用来指定仅使用 IPv4 地址。

四、宝塔配置DNS的操作方法

1.etc/resolv.conf

在这里插入图片描述

2.通过GUI界面

在这里插入图片描述
上面的配置方式是一样的效果。


@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】304. 二维区域和检索 - 矩阵不可变

304. 二维区域和检索 - 矩阵不可变(中等) 方法一:多个一维前缀和 思路 这道题是303. 区域和检索 - 数组不可变的进阶,第 303 题是在一维数组中做区域和检索,这道题是在二维矩阵中做区域和检索。第303 题中&#xff0…

【23种设计模式】策略模式(State Pattern)

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

使用 Python Selenium 提取动态生成下拉选项

在进行网络数据采集和数据分析时,处理动态生成的下拉菜单是一个常见的挑战。Selenium是一个强大的Python库,可以让你自动化浏览器操作,比如从动态生成的下拉菜单中选择选项。这是一个常见的网页爬虫和数据收集者面临的挑战,但是Se…

C#可视化 家用轿车信息查询系统(具体做法及全部代码)

目录 题目: 效果图: 数据库: 做法: combobox值更新 查询按钮功能(非空验证,查询数据) datagirdview设置 全部代码: DBHelper类 From1主窗体代码 题目: 效果图&#…

Qt Button实现按钮长按事件

Qt Button实现按钮长按事件 背景查资料第3种widget.cpp源文件 最好方法小结 背景 最近项目遇到一个需求,通过鼠标按钮长按一直发数据,鼠标松开立即离开。 想了一会儿大概有了几种思路(仅仅是思路,不一样可以实现) 1.重…

OBS Studio 29.1.2 正式发布

导读OBS Studio 是一款免费且开源的用于视频录制以及直播串流的软件,提供实时高性能的视频 / 音频捕捉与混合,以及无限的场景模式帮助用户通过自定义实现无缝转换。 OBS Studio 29.1.2 现已发布,具体更新内容包括: 在 Windows 设…

[7]PCB设计实验|认识常用元器件|电容器|19:00~19:30

目录 一、电容器的识别 电容的应用 1. 电容有通交流阻隔直流电的作用 2. 有滤波、耦合、旁路作用等 3. 有些电容是有极性,有些是没有极性 二、常见电容器 1. 贴片电容 a、材质瓷片 b、材质钽介质 c、材质电解质 2. 手插电容 a、瓷片电容 b、聚脂电容 …

【计算机组成与体系结构Ⅰ】课程设计——基于Logisim的模型计算机设计

基于Logisim的模型计算机设计 一、实验目的 基于Logisim软件,根据一个模型指令系统,在逐步学习和了解计算机组成各部分逻辑组成和各部分互联的基础上,深入理解课程中的知识点,利用此软件设计并实现一个模拟的8位模型计算机原型。…

NumPy库的学习

本文主要记录的是笔者在B站自学Numpy库的学习笔记。 引入numpy库 import numpy as np矩阵的创建 创建一个二行三列的矩阵。 array np.array([[1,2,3],[2,3,4]])查看array的行数、形状、元素数量 print("number of dim:",array.ndim) print("shape:"…

Sui x KuCoin Labs夏季黑客松|6月8日Suiet Workshop

由Sui和KuCoin Labs联合主办的夏季黑客松正如火如荼的报名中。了解黑客松详情:Sui与KuCoin Labs联合推出夏季黑客松,奖池高达28.5万美金! 👉 黑客松官方网站:Sui x KuCoin Labs Summer Hackathon 活动期间&#xff0…

2023年前端面试汇总-CSS

1. CSS基础 1.1. CSS选择器及其优先级 对于选择器的优先级: 1. 标签选择器、伪元素选择器:1; 2. 类选择器、伪类选择器、属性选择器:10; 3. id 选择器:100; 4. 内联样式:1000&a…

基于BP神经网络对MNIST数据集检测识别(numpy版本)

基于BP神经网络对MNIST数据集检测识别 1.作者介绍2.BP神经网络介绍2.1 BP神经网络 3.BP神经网络对MNIST数据集检测实验3.1 读取数据集3.2 前向传播3.3 损失函数3.4 构建神经网络3.5 训练3.6 模型推理 4.完整代码 1.作者…

EasyX实现简易贪吃蛇

📝个人主页:认真写博客的夏目浅石. 📣系列专栏:夏目的C语言宝藏 文章目录 前言一、头文件包含二、创建蛇与食物的结构体三、游戏的初始化四、游戏的绘画事件五、蛇的移动事件六、输入方向七、生成食物八、吃食物九、游戏失败的判定…

【Python开发】FastAPI 09:middleware 中间件及跨域

FastAPI 提供了一些中间件来增强它的功能,类似于 Spring 的切面编程,中间件可以在请求处理前或处理后执行一些操作,例如记录日志、添加请求头、鉴权等,跨域也是 FastAPI 中间件的一部分。 目录 1 中间件 1.1 创建中间件 1.2 使…

IDEA日常配置和操作小结

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: IDEA专栏 ✨特色专栏&…

算法刷题-数组-长度最小的子数组

209.长度最小的子数组 力扣题目链接 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s 7, …

电子元器件解析之电容(一)——定义与性能参数

下篇文章:电子元器件解析之电容(二)——电容分类与应用场景:https://blog.csdn.net/weixin_42837669/article/details/131142767 摘要 电容是最基本的电子元器件之一,本文介绍了电容的定义,并总结了电容的各个性能参数&#xff0c…

攻防世界—easyupload

2023.6.10 又试了一下 他好像会检测php字段,所以一开始的aaa.jpg怎么也传不上去,用a.jpg那种就可以了 根据题目和页面我们可以猜到这应该是一个利用文件上传漏洞,利用一句话木马来获取服务器上保存的flag保险起见右键查看源代码 可以发现毫无…

基础实验篇 | RflySim底层飞行控制算法开发系列课程总体介绍

本讲主要介绍多旋翼的特点及选用多旋翼作为实验平台的原因、对于无人系统教育的一些新需求、RflySim平台对于飞控的底层控制算法的开发优势、本期平台课程的设置、以及如何开发自驾仪系统。 相较于固定翼和直升机,多旋翼具有机械结构简单、 易维护的优点。以四旋翼…

使用 Pycharm 调试远程代码

文章目录 背景同步远程代码Interpreter注意点 背景 工作机是一台 Windows 电脑,而很多时候需要在 Mac 电脑上编码、配合 iPhone 模拟器,所以我以前是用 VNC 或者向日葵来远程 Mac 来编程,其实还能接受,但是最让我不舒服的是快捷键…