PHP中使用无限循环的POST请求,不断发送一些数据点(针对每秒一次).数据高度依赖于时间.如果超时,我不关心丢失的数据,我只想快速转到下一个数据点.

我最初使用file_get_contents()(超时值为1)来执行此POST请求,但我遇到了一些应该超时的问题而不是.我读了很多关于这个的问题,普遍的共识是file_get_contents()的超时没有被触发,因为它是一个读取超时,而不是连接超时.

我还读到套接字有两种超时,所以我改变代码使用fsockopen()代替.下面包含一个片段.

// waaaay up at the top of the file

ini_set("default_socket_timeout", 1); // set default socket connect timeout

//...

// inside the loop

echo("4...");

$url = 'othersite.ie';

$fp = fsockopen($url, 80, $errno, $errstr, 1); // connect timeout of 1

if(!$fp)

{

echo($errno .": ". $errstr);

}

else

{

echo("5...");

stream_set_timeout($fp, 1, 0); // read timeout of 1

$content = http_build_query($data); // array assembled before this snippet

fwrite($fp, "POST /some/address/at/url HTTP/1.1\r\n");

fwrite($fp, "Host: www.examplesite.ie\r\n");

fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");

fwrite($fp, "Content-Length: ".strlen($content)."\r\n");

fwrite($fp, "Connection: close\r\n");

fwrite($fp, "\r\n");

fwrite($fp, $content);

while(!feof($fp))

{

$result = $result . fgets($fp, 1024);

}

echo("6...");

if (empty($result))

{

echo("No result");

}

}

但这似乎没有帮助.我添加了一些echo语句,所以如果我正在观察输出,我可以看到延迟发生的地方,并且它总是在“4 ……”和“5 ……”之间.每次延迟大约十秒钟,他们似乎没有任何特定的顺序.大多数时候(超过99%)连接工作,读取工作,我将我的数据提供给服务器.但重要的是至少要尝试消除那些10秒的挂起.任何帮助赞赏.

php fsockopen 超时,php – fsockopen()超时有时不起作用相关推荐

  1. linux服务器调用端口超时,Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法...

    最近无法通过SSH连接Linux服务器,访问该服务器上的HTTP服务也出现异常.可以ping,但是telnet端口超时,网站wget超时,访问超时. 最后排查是内核配置问题 原来是 net.ipv4. ...

  2. python requests 代理超时_python requests 超时与重试

    一 源起: requests模块作为python爬虫方向的基础模块实际上在日常实际工作中也会涉及到,比如用requests向对方接口url发送POST请求进行推送数据,使用GET请求拉取数据. 但是这 ...

  3. java socket 超时_Java Socket超时浅析

    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...

  4. raft 有关竞选超时 vs 心跳超时的疑惑

    raft协议这两个超时时间是比较重要的,看着有些疑惑, 集群刚启动的时候,心跳会超时,这时候follower是直接成为candidator么?还是还要在心跳超时的基础上等待一个竞选超时才变成 cand ...

  5. python中设置超时跳过,超时退出

    python中设置超时跳过,超时退出. 在工作中遇到过 个问题 执行一条代码时间过长 而且还不报错,卡死在那.还要继续执行下面代码,如何操作. 下面是个简单的实例 pip安装 第三方eventlet这 ...

  6. 在请求网络时连接超时和读取超时的区别

    连接超时 连接超时指的是没连接上,超过指定的时间内都没有连接上,这就是连接超时. 读取超时 读取超时表示的是连接上了,但是读数据时超过了指定的时间范围,这就是读取超时.

  7. linux应用端口的网络超时,Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法...

    最近无法通过SSH连接Linux服务器,访问该服务器上的HTTP服务也出现异常.可以ping,但是telnet端口超时,网站wget超时,访问超时. 最后排查是内核配置问题 原来是 net.ipv4. ...

  8. tomcat服务器接口响应超时,Tomcat请求超时

    如果您试图阻止请求运行太长时间,那么在Tomcat中设置超时将无济于事.正如克里斯所说,您可以为Tomcat设置全局超时值.但是,从" Apache Tomcat连接器-通用方法超时&quo ...

  9. php fsockopen函数,PHP fsockopen函数详解

    PHP fsockopen是一个功能比较强大的函数.我们在这篇文章中将会对这个函数做一个具体的介绍,希望对大家有所帮助.记得以前的B2C网站就是通过这个函数实现前台和订单处理系统的交互. PHP fs ...

最新文章

  1. python 从网络URL读取图片并直接处理的代码
  2. iOS - 在UITextField外部触摸时关闭键盘
  3. SQLServer2005表分区知识点摘要
  4. 寻宝机器人科技竞赛_第19届广西青少年机器人竞赛组织工作筹备会暨广西青少年科技辅导员交流活动在贺州举行...
  5. python3.6字典有序_Python-字典是用Python3.6+订购的吗?
  6. Fabricjs一个简单强大的Canvas绘图库快速入门
  7. 符号库匹配不对的原因_中频点焊机焊接螺母有流渣是什么原因造成的?-苏州安嘉...
  8. git和gitlab安装
  9. linux下抓包学习--tcpdump的使用
  10. Redis服务安全加固
  11. 题目1120:全排列(回溯法)
  12. 标准输入输出详解(C++)
  13. Unicode中文编码表
  14. 人民币升值与A股之我见
  15. 团队建设的不同阶段与管理方式
  16. mac os x 使用教程_如何在Mac OS X计算机上使用扫描仪
  17. mysql error 1114_ERROR 1114 (HY000): The table 'test1' is full 的解决
  18. 1072 开学寄语 (20 分)
  19. 还在用PDF做简历?落后了!
  20. 十大常见web漏洞及防范

热门文章

  1. Python Selenium UI自动化测试
  2. 中微光 php,十个布光方法一看就懂
  3. 【数据库系统概论】-- 期末考试题含答案(填空、选择、简答、综合)(二)
  4. AKB48启示录:当偶像成为了邻家的少女,当粉丝成为了她们的编剧……【姜太公公】...
  5. python定义数组变量_python中数组用法
  6. Python爬取全民小视频网站视频,可爬取全站视频
  7. 通过Jmeter找到系统最大并发数
  8. 浅谈DDOS攻击,你以为的白嫖???
  9. updatePanel下使用uploadFile控件
  10. CPU GPU爆显存