php通过cURL爬取数据(2):CURLINFO_HTTP_CODE返回0

news2024/11/24 13:21:21

CURLINFO_HTTP_CODE返回0

  • 一、项目说明
  • 二、curl_getinfo返回异常
    • 1.小鹅通SDK
    • 2.CURLINFO_HTTP_CODE为0的原因有哪些?
    • 3.返回CURLINFO_HTTP_CODE=0的解决方案
    • 4.请求超时和服务器配置,CPU的使用率有关系吗
    • 5.结论
  • 三、阿里云短信发送延迟后而集中发送
    • 1.发送集中原因原因分析
    • 2.结论

一、项目说明

小鹅通是一款提供直播、录播、短视频等在线视频服务的平台。近期在对接其API常见的问题包括:

  1. 授权问题:在使用小鹅通API前,需要进行授权验证,确保访问API的合法性。如果授权信息出现错误或失效,会导致API请求失败。

  2. 参数错误:调用小鹅通API时需要传入相应的参数,如果参数错误或缺少必填参数,会导致API请求失败。

  3. 网络连接问题:由于网络问题,可能会出现API请求失败的情况。

  4. 频率限制问题:小鹅通对API请求频率有一定的限制,如果频繁调用API,可能会被小鹅通限制API调用或者关闭API访问权限。

  5. API返回异常:小鹅通API请求返回的数据格式、内容或状态可能会出现异常,需要对异常情况进行处理。
    在这里插入图片描述

二、curl_getinfo返回异常

1.小鹅通SDK

    public static function curlGet($url, $queryparas = array(), $timeout = 5, $header = array(), $proxy = array())
    {
        if (!empty($queryparas)) {
            if (is_array($queryparas)) {
                $postData = http_build_query($queryparas);
                $url .= strpos($url, '?') ? '' : '?';
                $url .= $postData;
            } else if (is_string($queryparas)) {
                $url .= strpos($url, '?') ? '' : '?';
                $url .= $queryparas;
            }
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        if (!empty($header) && is_array($header)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }

        if (!empty($proxy)) {
            curl_setopt($ch, CURLOPT_PROXYAUTH, 1);
            curl_setopt($ch, CURLOPT_PROXY, $proxy['ip']);
            curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']);
            curl_setopt($ch, CURLOPT_PROXYTYPE, 0);
        }

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
        curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

        $output = curl_exec($ch);
        if (is_array(json_decode($output, true))) {
            $output = json_decode($output, true);
        }

        $result['status_code'] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $result['body'] = $output;

        curl_close($ch);
        return $result;
    }

 curl_getinfo($ch, CURLINFO_HTTP_CODE);在使用过程中偶尔出现,会导致token掉包,无法更新用户信息。

2.CURLINFO_HTTP_CODE为0的原因有哪些?

当使用 PHP 中的 cURL 函数发送 HTTP 请求时,返回的 CURLINFO_HTTP_CODE 为 0 可能有以下几种原因:

  1. cURL 不能连接到服务器

如果服务器无法连接,可能是由于网络故障或服务器不可用造成的。在这种情况下,cURL 返回的 http code 为 0。

  1. 请求超时

cURL 可能会因为请求超时而无法完成请求,这可能是由于服务器响应时间过长或网络通信错误造成的。在这种情况下,cURL 返回的 http code 为 0。

  1. 服务器返回的 HTTP 响应代码为 0

如果您的服务器返回了一个异常的响应状态代码(如 000),则 cURL 的响应状态代码可以设置为 0。

  1. cURL 选项设置问题

如果您在使用 cURL 时,没有正确设置必需的选项,则它可能无法正确处理链接。 您应该确保 URL 正确,HTTP 请求正确设置,不要遗漏任何必需的选项,例如 CURLOPT_RETURNTRANSFER、CURLOPT_HEADER、CURLOPT_USERAGENT 等等。

以上是可能导致 curl_getinfo 返回的 CURLINFO_HTTP_CODE 为 0 的一些原因,需要根据具体情况进行排查。

3.返回CURLINFO_HTTP_CODE=0的解决方案

同病相怜:传送门
在这里插入图片描述
host no found,找不到主机?在项目中,主要是和小鹅云curl验证的token,在人员集中使用的时候会出现这种情况,而换台服务器是正常的,最大的原因应该就是使用的服务器的问题。

4.请求超时和服务器配置,CPU的使用率有关系吗

请求超时和服务器配置、CPU 的使用率之间有一定的关系。

当服务器的 CPU 使用率很高时,服务器可能会处理请求的速度变慢,从而导致请求超时。这是因为在处理请求时,服务器需要使用 CPU 处理逻辑,如果服务器的 CPU 使用率过高,可能会导致处理请求的速度变慢,从而导致请求超时。

另外,服务器配置的不当也可能会对请求超时产生影响。例如,当服务器配置不足时,服务器可能会无法处理大量并发请求,从而导致请求超时。所以,为了避免请求超时问题,需要根据服务器负载和需要处理的请求量,调整服务器配置,确保服务器可以稳定运行和高效处理请求。

总之,请求超时和服务器配置、CPU 的使用率之间有关系,需要注意合理调整服务器配置,确保服务器可以满足请求的处理需求,并提高服务器的性能和稳定性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.结论

  • 从小鹅云返回日志来看,cURL时通;
  • 正式环境服务器不能正常对接时,测试服务器的获取是正常的;
  • 查看运行日志和不同的时间节点来,应该是流量峰值导致的服务器处理请求的速度变慢,请求超时;

三、阿里云短信发送延迟后而集中发送

1.发送集中原因原因分析

  1. 短信发送频率限制

阿里云短信服务有发送频率限制,如果用户在短时间内向同一目标手机号发送大量的短信,阿里云短信服务可能会将这些短信缓存起来,等待一定时间后再发送。这样就会导致短信发送延迟且集中发送。

  1. 服务器负荷

如果您使用的服务器负载过高,可能会导致短信发送延迟。由于短信发送通常需要与阿里云短信服务进行网络通信,如果服务器的负载过高,网络通信也会变慢,从而影响短信发送的速度。

  1. 阿里云短信服务故障

如果阿里云短信服务发生故障或者维护,可能会导致短信发送延迟,同时在恢复服务后,可能会出现一些集中发送短信的情况。

  1. 短信发送服务调用问题

如果您使用的短信发送 SDK 或者接口对阿里云短信服务进行调用时,出现调用问题,例如请求超时或者网络波动等,可能也会导致短信发送延迟。

2.结论

从小鹅通的API对接以及CPU运行日志来看,服务器承受不了这么大流量。

升级服务器吧!


@漏刻有时

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

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

相关文章

自动化测试Junit

目录 Junit5注解TestDisabledBeforeAll、AfterAll、BeforeEach、AfterEach 参数化单参数多参数CSV获取参数方法获取参数 测试用例执行顺序断言 assert断言相等断言不相等断言为空断言不为空 测试套件 自动化测试项目1. 熟悉项目2. 针对核心流程设计手工测试用例3. 将手工测试用…

智能生成的登录、注册和找回密码界面,让您的网站更加便捷和高效

chatgpt国内镜像 https://chat.xingheai.life 恰饭广告 智能生成的登录、注册和找回密码界面,让您的网站更加便捷和高效 本文介绍了一种基于ChatGPT的智能生成技术,用于生成登录、注册和找回密码界面。我们使用了自然语言处理和机器学习技术,…

七、进程地址空间

一、环境变量 (一)概念 环境变量(environment variables):系统当中用做特殊用途的系统变量。 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可…

深入理解深度学习——正则化(Regularization):Dropout

分类目录:《深入理解深度学习》总目录 Dropout供了正则化一大类模型的方法,计算方便且功能强大。在第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Bagging涉及训练多个模型,并在每个测试样本上评估多个…

数组扁平化的8种方法 - js篇

文章目录 方式1:使用基础的递归遍历方式2:使用reduce函数递归遍历方式3:数组强制类型转换方式4:while循环结合findIndex与concat方式5:直接使用ES6的flat方法方式6:使用JSON的函数和正则表达式方式7&#x…

#【六·一】让代码创造童话,共建快乐世界# 庆祝儿童节的Html和Python代码

文章目录 1.儿童节的简介2.中国庆祝儿童节的方式3.一段庆祝儿童节的Python代码4.一段庆祝儿童节的Html代码 1.儿童节的简介 国际儿童节(又称儿童节,International Children’s Day)定于每年的6月1日。为了悼念1942年6月10日的利迪策惨案和全…

dvwa靶场通关(五)

第五关 File Upload(文件上传漏洞) File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限 low low等级没有任何的防护 创建…

10 【组件编码流程 组件自定义事件 全局事件总线】

1.组件编码流程 组件化编码流程: ​ (1).拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。 ​ (2).实现动态组件:考虑好数据的存放位置,数据是一个组件在用,还是一些组件在用: ​ 1…

将MSYS2 MinGW集成到Windows终端

微软开发了一款Windows终端的开源软件,非常好用。安装后在Win7及以上系统会在右键菜单中添加一条“在终端中打开”的命令,非常方便。它默认配置了Windows命令行以及PowerShell,如果安装了Visual Studio 2022还会配置Visual Studio 2022的命令…

C++入门教程||C++ Web 编程

C Web 编程 什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口&#xf…

《Java并发编程实战》课程笔记(十二)

CountDownLatch 和 CyclicBarrier:如何让多线程步调一致? 原始对账系统 对账系统的业务简化后: 首先用户通过在线商城下单,会生成电子订单,保存在订单库;之后物流会生成派送单给用户发货,派送…

软件测试面试怎样介绍自己的测试项目?会问到什么程度?

想知道面试时该怎样介绍测试项目?会问到什么程度?那就需要换位思考,思考HR在这个环节想知道什么。 HR在该环节普遍想获得的情报主要是下面这2个方面: 1)应聘者的具体经验和技术能力, 2)应聘者的…

【企业化部署】Tomcat部署及优化

文章目录 前言一、Tomcat 的概念1. Tomcat 核心组件1.1 什么是 servlet1.2 什么是 JSP 2. Tomcat 功能组件结构2.1 Container 结构分析 3. Tomcat 请求过程4. 配置文件4.1 安装目录4.2 conf 子目录 二、Tomcat 服务部署1. 下载并安装 JDK1.1 关闭防火墙,将安装 Tomc…

码垛机械臂工作站系统设计

码垛机械臂工作站系统设计 第一章 控制系统硬件设计1.1 引言1.2 控制系统总体方案1.3 控制系统硬件的选型1.3.1 可编程控制器的选型1.3.2 工业触摸屏的选型1.3.3 传感器的选型 1.4 硬件的接线与通讯1.4.1 可编程控制器的I/O分配与接线1.4.2 伺服电机驱动器的接线1.4.3 触摸屏与…

XML入库后空白字符丢失问题

最近项目上在做电子病历,使用的是第三方的电子病历组件,该病历组件是利用XML来组织数据的。界面上渲染出来的效果如下图: XML渲染后的界面 对应的后台数据(已做简化处理)是如下XML格式的,其中的空格部分是…

Windows 下配置Vitis HLS OpenCV仿真库(记录帖)

遇到的问题 我的配置: Vitis Vision 2022 opencv-4.4.0 vision Library 2022 Vitis HLS 2021.1 实测有BUG,编译好之后无法综合,别问我为什么知道 1. Download opencv_ffmpeg.dll 卡住 解决方法 打开 new_build 目录(编译路径&…

从小白到大神之路之学习运维第33天——第三阶段——mysql数据库

第三阶段基础 时 间:2023年6月5日 参加人:全班人员 内 容: Mysql数据库 目录 前提环境配置: 一、CentOS 7 安装 MySQL 5.7 二、MySQL 操作示例: 三、MySQL 5.7远程登录 前提环境配置: 关闭防火…

微信如何批量添加好友?

现在营销中,微信已成为一种重要的沟通方式。微信目前是没有自动批量添加好友的功能,需要运营者一个一个手动去添加,这样太过于浪费时间,并且加频繁了还容易被封号,今天给大家介绍几种手动批量加好友的方式以及怎么借助…

人工智能和网络安全哪个好?一般人我还是劝你算了吧

人工智能门槛高,上限高 网络安全门槛低,下限低 但是以目前的行业内招聘需求来看网安缺hvv安服工具人和法学双修合规人,人工智能缺高端算法大牛。 一、从安全出发,然后去学习人工智能,最后走人工智能安全。 这个确实需…

Java网络通讯案例——即时通讯(控制台版)

一、需求分析 用户与用户之间1-1或1-n通讯 二、技术分析 (一)客户端 客户端的功能有两个:发消息和接消息发消息:使用Socket技术的流式输出,配合打印流封装发送。接信息:使用读取专用线程,搭配…