发布于2024-10-31 15:36 阅读(1056) 评论(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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!