PHP函数stream_set_timeout(Stream Functions)作用于读取流时的时间控制。fsockopen函数的timeout只管创建连接时的超时,对于连接后读取流时的超时,则需要用到 stream_set_timeout函数。由于国内的网络环境不是很稳定,尤其是连接国外的时候,不想程序出现Fatal error: Maximum execution time of 30 seconds exceeded in …的错误,该函数尤其有用。stream_set_timeout需配合stream_get_meta_data使用,如果没有timeout, stream_get_meta_data返回数组中time_out为空,反之为1,可根据此判断是否超时。另外由于PHP默认的Maximum execution time为30秒,这是一次执行周期的时间,为了不出现上述的Fatal error,还需要设置一个总的读取流的时间,具体方法参见下面详细代码。

$server="www.yahoo.com";
$port = 80;

$data="GET / HTTP/1.0rn";
$data.="Connection: Closern";
$data.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)rnrn";

$start_time = time();
$fp=fsockopen($server, $port, $errno, $errstr, 5);
if (!$fp) {
die("Connect Timeout.n");
} else {
stream_set_blocking($fp, True);
stream_set_timeout($fp, 3);

fputs($fp, "$data");
while (!feof($fp)) {
$text .= fread($fp, 2000);

$diff = time() - $start_time;
if ($diff > 24) {
die("Timeout!n");
}

$status = stream_get_meta_data($fp);
if ($status[’timed_out’]) {
die("Stream Timeout!n");
}
}
}

fclose($fp);
?>

转载于:https://www.cnblogs.com/fll369/archive/2012/08/10/2631838.html

fscokopen 中执行超时 使用stream_set_timeout设置超时相关推荐

  1. python怎么连接远程服务器没有按时响应_python通过paramiko执行ssh命令时设置超时时间 - Python - 服务器之家...

    python通过paramiko执行ssh命令时设置超时时间 发布时间:2014-06-17

  2. php int 设置超时,php如何设置超时时间

    php设置超时的解决方法: (1)初始设置脚本执行时间 打开php.ini文件,找到:max_execution_time=30 修改为:max_execution_time=600 如果你没有服务器 ...

  3. 服务超时时间如何设置、如何对超时时间治理、超时设计原则一文揭秘!

    微服务是⼀种分布式架构,系统内各部分(服务)被部署为单独的应用程序,并通过某种远程访问协议进⾏通讯.分布式应⽤的挑战之⼀就是如何管理远程服务的可用性和它们的响应.本⽂主要探讨服务的响应时间对系统的影响 ...

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

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

  5. hset 设置超时_Redis分布式事务中超时时间如何设置?

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists ...

  6. 使用 curl 下载需要太长时间?试试在 cURL 中设置超时

    cURL是一个出色的网络通信工具,它代表"客户端 URL".几乎所有设备都使用地球上连接到 Internet 的 cURL,cURL 最广泛的用途是从终端中的远程服务器下载文件. ...

  7. java url 设置超时_(转)HttpURLConnection中设置网络超时

    Java中可以使用HttpURLConnection来请求WEB资源. HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConn ...

  8. Java中httpClient中的设置超时时间

    HttpClient mHttpClient = new DefaultHttpClient();/*** *********************设置超时********************* ...

  9. nginx中的超时设置,请求超时、响应等待超时等

    nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响 ...

最新文章

  1. postfix邮件安装配置文档
  2. python 多态 协议详解
  3. Microbiome:芝麻菜中肠杆菌科主导核心微生物组并贡献抗生素抗性组(简单套路16S+meta+培养组发高分文章)
  4. 05-连接数据库方法
  5. 不会但一定要了解的方面,python列表解析方式
  6. JDK9新特性实战:简化流关闭新姿势
  7. 2.简易的登录页面(表单验证)(HTML+JavaScript+Jquery)
  8. CSS显示:内联vs内联块[重复]
  9. matlab中fplot和ezplot,Matlab中plot、fplot、ezplot的使用方法和区别
  10. 用最简单的方式理解和使用ActivityMQ(基础入门)
  11. 【VS 生成exe程序添加程序图标】
  12. 201819102040张辰飞
  13. android 调出键盘表情_Android 显示输入法中的emoji表情以及String字符
  14. R语言中is.na()
  15. 【JZOJ3794】【洛谷P1383】高级打字机【主席树】
  16. 计算机管理关机在哪,电脑定时开关机在哪里设置
  17. Shell 脚本一键安装,Oracle 21C 单机版抢先体验
  18. PHP中curl的CURLOPT_POSTFIELDS请求时,Content-Type多出boundary=------------------------
  19. 几种生态廊道构建概念、方法和工具的本质比较
  20. JavaScript WebGL 基础概念

热门文章

  1. 位域(Bit-fields)分析
  2. [Java] 蓝桥杯ALGO-99 算法训练 薪水计算
  3. 蓝桥杯 ALGO-103 算法训练 完数
  4. 1024. 科学计数法 (20)-PAT乙级真题
  5. mysql主主复制和mha_MySQL第二章主从复制MHA高可用
  6. kafka中处理超大消息的一些考虑
  7. JavaScript声明变量详解
  8. 网页设计中的背景流行趋势是什么?
  9. Momenta 陈凯:从人才角度看 L4 无人驾驶的实现 | AI 研习社职播间第 4 期(附 Momenta 招聘解读)...
  10. springboot,hibernate,exception no session 问题解决