打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
stream_set_timeout(Stream Functions)

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); 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
cURL超时设置
编程语言socket小问题
PHP多线程的实现方法详解
fseek函数的用法 - C函数用法 - nlchjian
select函数详解及实例分析
简单的PHP并行处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服