程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在 PHP 中设置 CURL 连接和执行超时

发布于2024-10-31 15:36     阅读(1010)     评论(0)     点赞(3)     收藏(1)


我在 Raspberry Pi 中运行 Apache 服务器,它使用 CURL 从 PHP 脚本连接到 ESP8266 WiFi 模块。模块自动应答时运行良好(即,模块一收到 http 查询就会应答),但当它依赖于人工操作后才进行响应时(即,必须按下按钮才能应答 http 查询),它几乎立即超时。

我有以下配置,我想要给脚本 5 秒钟来建立连接,然后在超时之前再给模块 12 秒钟来应答:

$curl = curl_init("http://10.0.0.100:51813/?getVars=values");
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_USERAGENT => "Custom UserAgent",
    CURLOPT_FAILONERROR => 1,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 12,
    CURLOPT_HTTPHEADER => array('Accept: application/json'),
    CURLOPT_INTERFACE => "uap0"
));
$resp = curl_exec($curl);

如果没有建立连接(),我预计脚本会在 5 秒后超时CURLOPT_CONNECTTIMEOUT;如果连接成功,并且没有收到答复(CURLOPT_TIMEOUT),我预计脚本会在 12 秒后超时。

在我的测试中,连接 3 秒后超时(平均值),并且连接后立即超时(因此它不会等待 12 秒)。

你知道为什么吗?

注意:问题不可能出在 wifi 模块上。WiFi 模块获取请求,然后等待用户交互(10 秒)。如果用户按下按钮,它会发送请求。如果没有,它会关闭连接。如果我从模块代码中删除等待用户交互的部分,它会发送答案,一切正常(除了用户不交互)


解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/554234/bbc636856ec9eb1ec83a/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)